NodeJS + Express慢慢消耗越来越多的CPU

时间:2018-11-15 14:44:27

标签: node.js mongodb express azure-application-insights

我们遇到一个奇怪的问题,即NodeJS + Express中有一个端点,该端点每x分钟调用一次。 每次调用它时,我们都会在日志中(具体是Azure中的应用程序见解)看到CPU使用率略有增加。

随着时间的流逝,CPU使用率最终将达到100%并变得无响应。

我感到奇怪的是,我们在此端点上确实没有做任何时髦的事情。

我们获取了许多mongodb文档,对其进行了迭代,进行了一些处理,并保存了一些文档。就是这样。

使用上述任何工具/框架是否存在CPU可能泄漏的已知陷阱?

我在考虑我们是否配置了错误的内容,从而使请求永远无法解决。

我无法指定更多内容,因为我不知道这可能是什么原因。

1 个答案:

答案 0 :(得分:0)

听起来工作在下一个工作之前还没有完成?从你的解释中我看不出来。

不过我有几点建议:

对请求进行计时,如果该请求始终在x分钟左右失败,则将其设置为超时,至少是这样它不会杀死其他进程,也不会将此工作放在单独的线程上。

  1. 也许进入批处理系统(在文档上有一个标志,查询它是否存在或为假,并为结果集设置$ limit,然后在处理完该文档后相应地设置该标志)
  2. 您的记忆是什么样的?您是否可以使用投影来限制后端处理的数据。
  3. 如果仅更新一些文档,也许您应该重新访问该查询。我宁愿使用查询过滤结果集,然后引入一堆与JS过滤无关的文档。
  4. 代码中的内存管理-取消获取查询,使用完数组后将其设置为null,等等。