作者热门文章
- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我有一个 MongoLab 集群,它允许我使用 Oplog 拖尾来提高 Meteor.js 应用程序的性能、可用性和冗余。
问题是:因为我一直在使用它,我所有的出版物都需要更多的时间才能完成。当它只需要 200 毫秒时,这不是问题,但它通常需要更多时间,比如这里,我订阅了我描述的出版物 here .
该出版物的响应时间已经过长,并且 oplog 观察也在减慢它,尽管它远不是唯一一个观察 oplog 需要这么长时间的出版物。
谁能向我解释发生了什么?我在网络上的任何地方都找不到任何解释为什么观察 oplog 会减慢我的发布速度。
这里有一些来自 Kadira 的截图来说明我在说什么:
这是另一个 pub/sub 的截图:
最后,观察 oplog 需要合理的时间(但仍然会减慢我的 pub/sub):
最佳答案
Oplog 拖尾速度非常快。 Oplog 拖尾不是这里的问题。
您可能正在做很多您没有意识到的事情会使发布变慢:
Collection.forEach
调用的主体内进行文档更新。这是难以置信缓慢,并且您在方法体中表现不佳的根源。每次您执行由数百个并发连接监听的单个文档更新时,每个都需要更新;通过一次更新一个查询,Mongo 和 Meteor 都无法优化,他们必须等待每个用户在每次更改时更新。这是你的表现的双渐进增长。 解决方案:考虑如何使用 {multi:true}
进行更新。observeChanges
速度慢的另一个原因。 解决方案:考虑一下您是否真的需要对每个用户文档进行唯一订阅。 Meteor 对多个并发集合之间共享的相同订阅进行了优化。关于javascript - 为什么在 meteor /蒙戈中观察 oplog 需要这么多时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35634204/
我是一名优秀的程序员,十分优秀!