最近我的heroku应用程序开始出现内存错误。我还没有真正改变任何可能影响它的东西。经过一些浸泡测试和调试,我注意到dyno上有两个节点进程在运行:
下面是我从ps命令中看到的一个例子:
~ $ ps aux | grep "node"
u18923 46 0.0 0.0 2616 612 ? S 17:54 0:00 sh -c node ${NODE_INSPECT_FLAG} --gc-interval=100 --max-old-space-size=460 build-server/server/index.js
u18923 47 0.6 0.1 982148 79796 ? Sl 17:54 0:03 node --gc-interval=100 --max-old-space-size=460 build-server/server/index.js
u18923 72 12.9 0.3 1079028 195700 ? Sl 17:54 1:02 /app/.heroku/node/bin/node --gc-interval=100 --max-old-space-size=460 /app/build-server/server/index.js
/app/.heroku/note/bin/node内存消耗增加,最终导致应用程序崩溃,因为环境限制为512MB内存。
为什么有两个节点流程?为什么来自/app/.heroku
的那个会占用更多的内存并最终崩溃。我该如何解决这种情况?
发生这种情况是因为使用https://www.npmjs.com/package/throng并发性为1。本地似乎也有某种内存泄漏,我当时正在检查";叉状物";(父(过程,而不是正在生长的实际过程。