在 Ubuntu 9 中,我在服务器上收到一条消息,内容为:
(node) Hit max file limit. Increase "ulimit -n"
但是,在终端中输入命令会显示以下内容:
$ ulimit
unlimited
$ ulimit -n
65535
显示netstat
我只打开了~1000 个连接。
尽管我显示有 1000 个活动连接,但为什么我还是达到了 65535 的限制netstat
?有人看到我可能忽略的服务器配置问题或有进一步调试的提示吗?
答案1
ulimit -n
显示打开文件描述符的最大数量,而不是网络连接的最大数量。您可能希望使用它lsof -p <PID_OF_node.js>
来确定它打开了哪些文件。我猜您的 node.js 代码存在一些逻辑缺陷。
答案2
在终端中输入ulimit -n
显示当前限制,这对您的当前会话有效。如果您在伴随守护进程启动后更改了限制,则该守护进程的限制不会受到影响。因此您需要停止/启动守护进程。但请确保守护进程的初始化脚本中的限制没有改变。
此外,您可能还想添加如下内容:
* soft nofile 2048
* hard nofile 2048
到 /etc/security/limits.conf,这样您就不必ulimit -n
每次都手动操作。