打开文件描述符,Ubuntu 11.04上的Oracle Java 1.7(GNU / Linux 2.6.38-8-x86_64)

我们正在打开文件描述符的最大限制的问题。 在使用下面提到的设置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 

重新启动服务器以应用更改。