node.js - Mongodb tailable游标,CPU使用率高-nodejs + mongodb

标签 node.js mongodb

嗨,我一直在尝试使用 mongodb tailable 游标来获取图表上的实时数据,到目前为止,一切都很好,但有一些小问题。主要问题之一与高 cpu 使用率有关,在我第一次调用 mongo tailable 查询时设置了以下选项

tailable: true,
awaitdata: true,
numberOfRetries: -1

CPU 使用率几乎为 8-10%,此后对于每个额外的请求,它都会以相同的负载量增加......

但是当我将其更改为

tailable: true,
awaitdata: false,
numberOfRetries: -1,
tailableRetryInterval: 200

CPU 使用率下降,一切都很好

awaitdata {Boolean},awaitdata允许游标等待数据,仅适用于tailable游标。

tailableRetryInterval {Number},tailableRetryInterval指定tailable游标上getMores之间的毫秒数。

我的问题是,关闭awaitdata并使用tailableRetryInterval是否更好,这对CPU来说很容易,还是我做错了什么?

最佳答案

  1. CPU 使用率 10% 不算什么。真的。使用过的资源是好资源,因为它们实际上用于比闲置更有用的事情。当然,直到达到某个阈值。
  2. 当您减少检查可尾游标的时间间隔(如您所做的那样)时,CPU 使用率当然会减少。这实际上取决于您的用例。如果您可以接受在处理条目之前存在一定延迟的事实,那就没问题。但通常情况下,您希望尽可能快地处理事情。另请记住,当您等待一段时间时,多个条目可能已进入上限集合 - 并且它们的处理可能需要时间和 CPU 周期。我倾向于尽可能保持 CPU 负载均匀,并不惜一切代价防止峰值。因为当不同原因导致的峰值同时发生时,您就有麻烦了。
  3. 很难说您是否做错了什么,除非我们知道您的功能和非功能需求、约束、用例或单行代码。

关于node.js - Mongodb tailable游标,CPU使用率高-nodejs + mongodb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26971077/

相关文章:

javascript - 如何在nodejs中将mysql中的数据显示到html div?

node.js - 使用 NodeJS 的回调和事件发射器功能

javascript - 在 Https 上使用 Express.js 在 Node.js 上配置 ATS

javascript - express 4 router with express.Router(),如何获取全局数据库连接?

javascript - 如何在nodejs上将busboy文件流转换为二进制对象

java - 使用 spring-data 从 MongoDB 随机文档

javascript - meteor :Mongo 对子键进行排序

node.js - 为什么 Node.js session 存储对性能有如此大的影响?

javascript - 使用 SSL 运行 vuejs 开发服务器(通过 HTTPS 提供服务)

node.js - Mongoose 居住在 child 中