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

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

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

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

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

我在想我们是否配置了错误的内容,使请求永远以某种方式持续存在。

我无法详细说明,因为我不知道这可能是什么原因。

最佳答案

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

我有一些建议:

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


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

关于node.js - NodeJS + Express慢慢消耗越来越多的CPU,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53321960/

10-12 04:01
查看更多