几小时后,Node Server崩溃

时间:2015-04-09 10:59:47

标签: linux node.js ubuntu forever nodemon

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

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

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一起使用吗?有什么缺点吗?

或者还有其他有效的解决方案来修复服务器崩溃吗?

2 个答案:

答案 0 :(得分:2)

如果您拥有大量用户,那么您最多可能会遇到排队等待侦听套接字的最大请求数。如果您确定您的服务器可以处理负载,您可以从默认值128增加到1024。

是的,增加ulimit,因此系统可以处理更多负载,但不要设置为无限制,只需检查足以处理当前负载的内容。

同时完成此Increasing the maximum number of tcp/ip connections in linux 也会得到一些有用的信息

答案 1 :(得分:0)

这可能不是理想的答案,但使用带有nodemon的forever-service将确保服务器在崩溃后重新启动。

这是对我有用的命令。我包括它因为永远服务和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