您的位置:首页 > 运维架构 > Linux

Centos中普通用户启动多个Dubbo服务出现java.lang.OutOfMemoryError: unable to create new native thread

2016-07-06 21:15 766 查看
当在同一台Centos服务器上用普通用户启动多个dubbo服务时出现调用异常,查看日志发现是以下错误:

2016-07-06 16:23:48.806 [New I/O server boss #1 ([id: 0x55fcd7d6, /0:0:0:0:0:0:0:0:20882])] WARN  o.j.n.c.socket.nio.NioServerSocketPipelineSink -  [DUBBO] Failed to accept a connection., dubbo version: 2.5.3, current host: 127.0.0.1
java.lang.OutOfMemoryError: unable to create new native thread

        at java.lang.Thread.start0(Native Method) [na:1.7.0_79]

        at java.lang.Thread.start(Thread.java:714) [na:1.7.0_79]

        at java.util.concurrent.ThreadPoolExecutor.addWorker(ThreadPoolExecutor.java:949) [na:1.7.0_79]

        at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1371) [na:1.7.0_79]

        at org.jboss.netty.channel.socket.nio.NioWorker.register(NioWorker.java:115) ~[netty-3.2.5.Final.jar:na]

        at org.jboss.netty.channel.socket.nio.NioServerSocketPipelineSink$Boss.registerAcceptedChannel(NioServerSocketPipelineSink.java:279) ~[netty-3.2.5.Final.jar:na]

        at org.jboss.netty.channel.socket.nio.NioServerSocketPipelineSink$Boss.run(NioServerSocketPipelineSink.java:246) ~[netty-3.2.5.Final.jar:na]

        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [na:1.7.0_79]

从异常中红色部分可知:

以上的异常是因为不能创建线程造成的

分析其原因为:



根据dubbo官方文档分档可知,如果没有配置线程模型的情况下,默认为固定的一个dubbo服务启动时固定创建一个100个线程的线程池,而Centos默认的普通用户的线程限制为1024,所以多个dubbo服务启动时,就可能出现以上的普通用的线程数已经用户,而无法创建线程的异常,所以我们现在可以做的就是增大普通用户的线程数。那么增加到多少是合适的呢。

首先我们可以通过ulimit -u来查看当前系统可以支持的最大的线程数。

比如我的8G的服务器得到的数值为62727,那我们就可以在这一个数值之内根据实际情况来设置该值,但是一定要比这一个值小,如果设置得比这一个值大,那么普通用户就能把这一个数量耗完,那么可能那时远程工具都不能连上服务器,只能到机房硬启动服务器才能解决了。

接下来修改这个值:

在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的配置。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: