8

我们看到 Meteor 应用程序的登录响应时间非常慢。随着负载接近 200 次登录/分钟,observeChanges 调用变得非常缓慢:登录方式

观察大变化

由于 loginWith<service> 是 Meteor 核心的一部分,这个问题似乎很难调试。请注意,只有当应用程序达到 100-200 次登录/分钟秒时,我们才会看到这些缓慢的响应时间时,我们才会看到这些缓慢的响应时间。当应用程序的负载较少时,observeChanges 只需几毫秒。知道是什么原因造成的吗?

编辑:添加了扩展慢项的堆栈跟踪: 观察大变化

4

1 回答 1

1

查看您的屏幕截图,您似乎已经定义了一个自定义发布来返回个人用户详细信息。作为故障排除步骤,如果您对此查询不感兴趣,请尝试禁用响应性:

Meteor.publish('currentUser', function () {
  return Users.find({
    _id: this.userId
  }, {
    fields: {
      emails: 1,
      registered_emails: 1,
      services: 1,
      isPremium: 1,
    },
    reactive: false,
  });
});

为了更进一步(如果你想让事情保持被动),你可能想研究利用Meteor 1.3 的 poll/diff 调整功能,看看这是否会有所作为。因此,不要依赖于您的用户发布的 oplog,而是尝试为该特定查询禁用它,并调整pollingIntervalMsandpollingThrottleMs选项。所以像:

Meteor.publish('currentUser', function () {
  return Users.find({
    _id: this.userId
  }, {
    fields: {
      emails: 1,
      registered_emails: 1,
      services: 1,
      isPremium: 1,
    }
  }, {
    disableOplog: true,
    pollingThrottleMs: 10000, 
    pollingIntervalMs: 10000,
  });
});
于 2016-08-11T11:59:06.600 回答