Node.js PM2--最大内存重启:EADDRINUSE:地址已在使用中
我有一个Node.js PM2--最大内存重启:EADDRINUSE:地址已在使用中,node.js,pm2,Node.js,Pm2,我有一个node.js应用程序在nginx负载平衡器后面的多个系统上运行。在白天和高峰时间,这些节点开始消耗更多的内存和cpu,当它们达到640MB内存的阈值时,它们会正常地重新启动。重启由PM2json脚本和max memory restart控制 现在的问题是,在重启后,新进程有时(并非总是)无法启动,因为端口仍在使用中。它在所有节点上随机发生 错误: 错误:侦听EADDRINUSE:地址已在使用中:::8888 在Server.setupListenHandle[as_listen2](n
node.js
应用程序在nginx负载平衡器后面的多个系统上运行。在白天和高峰时间,这些节点开始消耗更多的内存和cpu,当它们达到640MB内存的阈值时,它们会正常地重新启动。重启由PM2
json脚本和max memory restart
控制
现在的问题是,在重启后,新进程有时(并非总是)无法启动,因为端口仍在使用中。它在所有节点上随机发生
错误:
错误:侦听EADDRINUSE:地址已在使用中:::8888在Server.setupListenHandle[as_listen2](net.js:1255:14)
在ListeniCluster(net.js:1303:12) 在Server.listen(net.js:1391:7)
server.json脚本:
{
"name" : "server.json",
"script" : "server.js",
"max_memory_restart" : "640M",
"log_date_format" : "YYYY-MM-DD HH:mm Z"
}
有什么不对劲?注意:我无法在群集模式下启动server.json,因为每个系统只有一个cpu。听起来端口
8888
仍在使用,因此新进程无法绑定到它。我不确定你的应用程序是如何工作的,所以不能确切地说。我的理论是进程仍在关闭,但是在它可以释放端口<代码> 8888代码>代码之前,它试图复制它。请考虑调整你的重新启动脚本,如果它失败了,发现什么进程正在保存端口。