我们正在打开文件描述符的最大限制的问题。 在使用下面提到的设置configuration服务器之后,我们testing一下,看看最大打开的文件描述符是否在重启之后立即被设置为10000,以查看设置是否仍然如此, ulimit -Hn和ulimit -Sn或ulimit -a 。 报告的值(10000)是正确的。
当我们运行我们的java应用程序时,我们打到最多4096个打开的文件描述符,直到我们得到java.net.ConnectException。
我运行watch -n 1 -x cat /proc/sys/fs/file-nr来检查打开文件的数量,当exception发生时这是正常的报告4448,因为在运行jar之前有352个报告。
正在运行的内核是在这个post的标题Ubuntu 11.04(GNU / Linux 2.6.38-8-虚拟x86_64),我想知道如果这可能是问题?
我们在我们的系统上configuration了以下内容
/etc/security/limits.conf
将以下两行添加到文件中。 星号仅仅意味着该规则将适用于所有用户。
root soft nofile 10000 root hard nofile 10000 (our ssh user) soft nofile 10000 (our ssh user) hard nofile 10000
/etc/pam.d/common-session
添加以下行:
session required pam_limits.so
保存该文件并退出。
通过在内核variables/proc/sys/fs/file-max设置一个新的值来增加打开文件的最大数量(以root身份login):
sysctl -w fs.file-max=65000
编辑/etc/sysctl.conf文件并追加以下行,以便重新启动后,设置将保持原样:
fs.file-max = 65000
重新启动服务器以应用更改。