Debian 上的文件描述符太多,ulimit -n 不起作用

Debian 上的文件描述符太多,ulimit -n 不起作用

让我通过以下方式解决所有 ulimit -n 和 /etc/security/limits.conf 问题:我尝试将 ulimit -n 设置为 2048、4096 和 65535。我已将 nofiles 的软限制和硬限制都设置为所有这些值。ulimit -n 显示它已更改。但在运行服务器时,它仍然只能打开 1024 个套接字。accept 失败,错误号为 24(打开的连接太多)。

经过几个小时的谷歌搜索、在 #debian 中提问以及阅读 ServerFault 上的问题,我仍然没有找到解决方案。为什么 ulimit -n 会显示一个数字,但仍然被限制为 1024 个打开文件描述符?

一些可能有用的信息:该进程正在 su 中的屏幕终端上启动。是的,我已将 pam_limits.so 添加到 /etc/pam.d/su。我还将其添加到 /etc/pam.d/common-session。仍然没有运气。

答案1

没关系,事实证明问题是 ulimit -n 和 FD_SETSIZE 的组合。似乎应用程序正在使用 setrlimit 将 ulimit -n 设置为 FD_SETSIZE。我通过取消定义并将 __FD_SETSIZE 重新定义为更大的值来解决这个问题。

答案2

这个命令告诉你什么?

sysctl fs.file-max

您可以尝试:

sysctl -w fs.file-max=[bigger-number]

如果可行,则将其添加到您的/etc/sysctl.conf文件中:

fs.file-max = [bigger-number]

相关内容