在Ubuntu 9中,我在我的服务器上收到一条消息:
(node) Hit max file limit. Increase "ulimit -n"
但是,在terminal中input命令会显示以下内容:
$ ulimit unlimited $ ulimit -n 65535
而一个netstat显示我只有〜1000个连接打开。
尽pipenetstat说我有1000个活动连接,但是我怎么可能达到65535的限制呢? 有没有人看到一个服务器configuration问题,我可能忽略或有进一步的debugging技巧?
ulimit -n显示打开的文件描述符的最大数量,而不是networking连接的最大数量。 您可能需要使用lsof -p <PID_OF_node.js>来确定打开了哪些文件。 我的猜测是你的node.js代码有一些逻辑缺陷。
在terminal键入ulimit -n显示当前的限制,对当前会话有效。 如果您在守护进程开始后更改了限制,则该守护进程的限制不受影响。 所以你需要停止/启动守护进程。 但要确保守护进程的初始化脚本中不存在限制。
另外,你可能想添加这样的东西:
* soft nofile 2048 * hard nofile 2048
到/etc/security/limits.conf,所以你不必每次都手动ulimit -n 。