让我把所有ulimit -n和/etc/security/limits.conf的答案放在一边说:我已经尝试将ulimit -n设置为2048,4096和65535.我设置了软件和nofiles对所有这些值的硬性限制. ulimit -n表明它已被更改.但是在运行服务器时,它仍然只能有1024个打开的套接字.接受失败的是errno 24(开放连接太多.)
经过几个小时的谷歌搜索,在#debian询问,并在ServerFault上阅读问题,我仍然没有找到解决方案.为什么ulimit -n显示一个数字,但仍然限制为1024个打开的文件描述符?
一些可能有用的信息:该过程在终端的屏幕上以su开头.是的,我已将pam_limits.so添加到/etc/pam.d/su.我还将它添加到/etc/pam.d/common-session.仍然没有运气.
解决方法
没关系,事实证明问题是ulimit -n和FD_SETSIZE的组合.似乎应用程序正在使用setrlimit将ulimit -n设置为FD_SETSIZE.我通过取消定义并将__FD_SETSIZE重新加工为更大的东西来解决这个问题.