长时间观察在登录期间更改呼叫

Max*_*son 8 mongodb meteor meteor-accounts kadira

我们的Meteor应用程序的登录响应时间非常慢.当负载接近200 logins/minute时,observeChanges调用变得非常慢:登录方式

ObserveChanges很大

由于loginWith <service>是Meteor核心的一部分,因此这个问题似乎很难调试.请注意,一旦应用程序达到100-200 logins/min ,我们只会看到这些缓慢的响应时间.当应用程序上的负载较少时,observeChanges只需要几毫秒.知道是什么原因引起的吗?

编辑:添加了扩展缓慢项目的堆栈跟踪: ObserveChanges很大

hwi*_*son 1

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

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

为了更进一步(如果您想让事情保持反应性),您可能需要考虑利用Meteor 1.3 的 poll/diff 调整功能,看看这是否会产生影响。因此,不要依赖 oplog 来进行用户发布,而是尝试针对特定查询禁用它,并调整pollingIntervalMspollingThrottleMs选项。所以像这样:

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,
  });
});
Run Code Online (Sandbox Code Playgroud)