今天tomcat在跑任务时发现每次都有报错java.net.SocketException: Too many open files,

通过查阅文档发现是当时做系统初始化操作时忘了设置ulimit值,以至于一直使用默认值1024。

于是马上修改配置文件

echo  "* soft nofile 200000">>/etc/security/limits.conf
echo  "* hard nofile 200000" >>/etc/security/limits.conf
ulimit -SHn 200000         ## 对当前窗口生效,关闭后失效

但是再次跑任务时候发现报错依旧,于是各种查找,最后想到tomcat在修改ulimit后没有重启。重启后问题解决。


查找相关文档发现以下原因:

如果程序A已经运行,此时ulimit -n为1024;

然后设置ulimit -n 2048,这时再运行程序B;

退出当前shell用户,再次登录shell,运行程序C;

这时只有B程序用的是2048,其它用的都是1024.


参考文献:http://www.th7.cn/system/lin/201309/45075.shtml