【发布时间】:2018-05-01 04:47:02
【问题描述】:
在我的 Meteor 应用程序中,我有一个对文档执行一些操作的函数。它首先获取数据,进行一些服务器端调整,然后再次更新文档属性。我有时需要在许多文档上运行它(数千个,最多 250k)。
1000个文档正常速度在2s以下(一个一个地获取文档,经过一些本地数据处理后,一个一个地更新,没有批量更新,所以运行的比较快)。但是,如果网络服务器已经运行了一段时间,并且用户已经登录,则运行此功能需要很长时间(例如 1000 个文档需要 160 秒)。
我必须注销所有用户(db.users.update({}, {$set: {"services.resume.loginTokens": []}}, {multi: true}) )才能恢复速度.运行数据库查询后,执行速度又回到了 ~2s/1000。
有什么问题?它不应该与索引相关,因为它会慢得多。此外,DB 端没有日志表明 DB 是问题所在,并且 DB 没有任何高 CPU 使用率。虽然网络服务器以 100% 运行(除此之外,网络服务器从未达到 15%)。
网络服务器是 AWS T2.small,登录用户的数量(反正他们是空闲的,就像我在晚上做的那样)大约是 10。我假设他们有一些开放订阅。
【问题讨论】: