libgomp: Thread creation failed: Resource temporarily unavailable
我的服务用的是ImageMagic + JMagick来对图片进行压缩,web容器是tomcat,系统是CentOS6.0。最近发现tomcat有时崩掉了,在catalina.out文件里发现了这行出错信息:libgomp: Thread creation failed: Resource temporarily unavailable各种Google后,网上的普遍...
我的服务用的是ImageMagic + JMagick来对图片进行压缩,web容器是tomcat,系统是CentOS6.0。最近发现tomcat有时崩掉了,在catalina.out文件里发现了这行出错信息:
libgomp: Thread creation failed: Resource temporarily unavailable
各种Google后,网上的普遍说法是进程数达到了系统设置的上限,所以不能创建新的进程。CentOS对每个用户创建的最大进程数默认设置是1024个(max user processes = 1024),可以用ulimit -u看到。我用ps命令查看,平时也就200+个进程,高峰时间也绝对不会超过 1024个。
后来,我终于发现了问题的答案。原来,在linux上,线程也是特殊进程,叫Light Weight Process(LWP) ,轻量级进程。如果算上线程,那么在同一时刻,整个系统的进程肯定较 多,因为光tomcat就会创建很多线程来处理请求。具体的数可以用 ps -eLf 查看。
问题找到了,解决方案就简单 了。用root权限打开 /etc/security/limits.d/90-nproc.conf , 将 nproc 的的值设置大一些,我暂时设置成了10240,如下:
* soft nproc 10240
10240要是不够用,以后再改大点就是了。改完保存,再用ulimit -u确认下, 搞定!
更多推荐
所有评论(0)