NodeJS 内存泄漏计划/Cron作业

wsewodh2  于 2022-12-26  发布在  Node.js
关注(0)|答案(3)|浏览(210)

我的应用程序中有一个GET路由,它只是启动一系列计划任务/cron作业(使用node-cronnode-schedule等NPM模块)
我最近在repeatedRequests中实现了一些逻辑来从steam profiles中抓取一些球员信息(我的API的主要逻辑)。我已经将我的应用部署到AWS,这允许我设置一些内存和CPU使用的基本监控和指标。
查看内存利用率图表x1c 0d1x
我们可以看到,每6个小时,应用程序的内存使用量就有一个持续的上升趋势,这就指向了我最近引入的cron作业,我没有正确执行cron作业吗?我能更好地处理承诺吗?
在repeatedRequests或其他路由中,是否还有其他我应该或可以更好地处理的可能导致内存泄漏的内容?
对API发出的较大请求在应用程序从新鲜启动大约一天或一天半后开始变慢,正如您所看到的,内存使用量已经增加了3倍,因为它从昨天开始从4%增加到12%:O所以我必须每周手动重新给予它,否则它以前也崩溃过很多次...
谢谢你们

hgqdbh6s

hgqdbh6s1#

这是一个愚蠢的错误,cron作业被设置为从每隔6分钟开始一个新作业,从而创建了无限数量的新作业,这些新作业相互堆叠
从那时起,语法已更改为从
* */6 * * *0 */6 * * *,并且内存使用率现在保持在7%不变,祝您愉快!

jhdbpxl9

jhdbpxl92#

node-cron(#358)中存在一个已知问题,即a bug in NodeJS导致内存使用过多。
显然这个bug在Node v12.20.0中已经修复了,但是我运行的是v18.4.0,仍然看到这个问题。
在撰写本文时(2022年9月),有一个PR似乎可以解决这个问题(#366),但尚未合并。

to94eoyn

to94eoyn3#

我有同样的问题,但这是因为我添加了时区的选项

cron.schedule('0 22 * * *', () => {
    console.log('Cron Job started');
    CronService.notifyTomorrowShifts();
  },{
      timezone: 'America/Los_Angeles',
   });

一旦我把它取下来,它就能正常工作了
我在18号节点

相关问题