几个小时后,节点服务器崩溃

我在Ubuntu服务器上使用Forever模块的Nodemon。

我使用这个命令启动我的节点服务器:

forever start -c nodemon app.js --exitcrash 

它工作正常几个小时(约48小时),但之后,我的服务器停止这些错误的工作:

 Error: getaddrinfo EMFILE TypeError: Cannot call method 'indexOf' of undefined Error: Handshake inactivity timeout 

这些错误是由于超出打开文件/套接字的限制引起的。

现在我的问题是:

我可以使用-m(在我的操作系统中设置为无限制):

 max memnory size (kbytes, -m) unlimited 

我应该用-m来使用上面的命令吗? 有什么缺点吗?

还是有没有其他有效的解决scheme来解决服务器崩溃?

如果你有大量的用户,最有可能的是你打到系统最大数量的请求排队等待侦听套接字。 如果你确定你的服务器可以处理负载,你可以从默认的128增加到1024。

是的,增加ulimit,所以系统可以处理更多的负载,但不设置为无限制,只是检查什么是足以处理当前的负载。

也要经过这个在linux中增加最大数量的tcp / ip连接也会得到一些有用的信息

这可能不是理想的答案,但使用永远服务与nodemon将确保您的服务器崩溃后重新启动。

这是为我工作的命令。 我包括它,因为获得永久服务和nodemon发挥好可能会很棘手。

它执行以下操作:每次修改应用程序dist / assets文件夹中的json或raml文件时,请等待10秒钟,然后重新启动节点应用程序(server.js脚本):

 $ forever-service install raml --script server.js -f " -c nodemon" -o " --delay 10 --watch dist/assets -e json,raml --exitcrash" -e "PATH=/usr/local/bin:$PATH" 

然后我可以运行:

 $ service raml start|stop|restart|status 

我也可以使用chkconfig实用程序在服务器重新启动时启动服务:

 $ chkconfig --add raml $ chkconfig raml on