使用docker容器跑tomcat,由于同一个宿主机上跑了多个容器,再加上宿主机本身跑了很多进程,导致系统总的进程数达到了8000+,而容器中tomcat的启动脚本中会调用自带的setenv.sh,在 setenv.sh 中有这么一句 ulimit -u 8192 ,由于系统进程数已经达到了8192,因此在启动tomcat时会报错:
tomcat/bin/catalina.sh: fork: retry: No child processes
tomcat/bin/catalina.sh: fork: retry: No child processes
tomcat/bin/catalina.sh: fork: retry: No child processes
tomcat/bin/catalina.sh: fork: retry: No child processes
tomcat/bin/catalina.sh: fork: Resource temporarily unavailable
导致tomcat无法启动, 后来修改setenv.sh,将ulimit -u 8192,改为ulimit -u 58192 ,tomcat可以正常启动了。
系统max proc配置(ulimit -a查看)在/etc/security/limits.conf中。
系统limit设置修改方法推荐链接:
http://pvbutler.blog.51cto.com/7662323/1558092
http://jingyan.baidu.com/article/1974b289a397d1f4b1f77495.html
http://www.cnblogs.com/mylingc/archive/2013/05/24/3097416.html