【发布时间】:2015-06-14 17:01:58
【问题描述】:
我在 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 一起使用吗?有什么缺点吗?
或者有没有其他有效的解决方案来修复服务器崩溃?
【问题讨论】:
-
关闭打开的文件/套接字怎么样?
-
@AleksandrM 我的站点中有大量用户,我已检查节点服务器是否自行关闭了套接字。 socket.on('disconnect', function () { var socketIndex = connectionsArray.indexOf( socket ); console.log('socket = ' + socketIndex + 'disconnected'); if (socketIndex >= 0) { connectionsArray.splice( socketIndex, 1 ); } console.log(socketIndex + '连接数:' + connectionsArray.length); });控制台日志显示当前使用的打开套接字的数量。
-
@EdgarZakaryan 如果我使用 # ulimit -n 99999 命令增加服务器上的文件数限制有什么缺点吗?
-
@Irtizashahid 它可能会耗尽系统资源
标签: linux node.js ubuntu forever nodemon