可能的原因
1.Linux服务器自身硬件问题:
Centos默认的普通用户的线程限制为1024,可能登陆CentOS系统的用户,执行线程数过多,导致出现无法创建更多线程数的异常。
首先我们可以通过ulimit -u 来查看当前系统可支持的最大线程数。那么增加到多少是合适的呢。
比如8G的服务器得到的数值为62727,那我们就可以在这一个数值之内根据实际情况来设置该值,但是一定要比这一个值小,如果设置得比这一个值大,那么普通用户就能把这一个数量耗完,那么可能那时远程工具都不能连上服务器,只能到机房硬启动服务器才能解决了。
接下来修改这个值
CentOS系统6.0之前修改
在CentOS6之前修改/etc/security/limits.conf 即可,如果是CentOS6后的版本则推荐修改/etc/security/limits.d/90-nproc.conf 文件,因为系统会先读/etc/security/limits.conf,如果/etc/security/limits.d/目录下还有配置文件的话,也读进来,一起分析。这就意味/etc/security/limits.d/里面的文件里面的配置会覆盖/etc/security/limits.conf的配置。
* soft nofile 1048576
* hard nofile 1048576
* soft nproc 4096
* hard nproc 8192
根据dubbo官方文档分档可知,如果没有配置线程模型的情况下,默认为固定的一个dubbo服务启动时固定创建一个100个线程的线程池
http://blog.youkuaiyun.com/yangbutao/article/details/8348926