今天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