unix增加文件打开数

实验室里的项目需要把数据库的java代码上传到elastic search上。从数据库里找到对应的java文件的相应的函数,然后对应上传到搜索引擎上。但是由于需要上传的文件数过多,导致服务器上的文件打开数过多。会出现java.net.SocketException: Too many open files的异常。这个问题我之前就遇到过,当时的解决方法是避免大量的打开文件/连接,尽量多个文件用一个session然后再关闭。但是今天我用的这个SshClient好像并不能用这个方法解决,因为我们必须不断地访问不同服务器上的文件(之前的文件就部署在不同的服务器上). 因此我就采取了将linux服务器的文件句柄调大的方式。

通过执行ulimit -a可以看到服务器上open files 的最大数为1024,这个对于我们40万的数据显然是有点捉襟见肘了。可以通过ulimit -n 4096把打开文件数的上限设为了4096,但这个方法如果退出了服务器,又恢复原样,而我们希望永久改变这个最大的文件句柄数。采取如下的方法:

1.打开/etc/security/limits.conf,里面有很详细的注释,找到如下设置(如果没有就插入)
* soft nofile 51200
* hard nofile 51200
2.编辑/etc/pam.d/common-session,加入一行
session required pam_limits.so
3.编辑/etc/profile,加入
ulimit -SHn 51200
重启服务器,再次登陆,查看句柄数,已经正确设置为51200。

然后再在我们的服务器上执行我们的jar包程序,就一切OK了。

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注