使用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