文档章节

Dubbo无法创建新线程异常解决方案

会跳舞的机器人
 会跳舞的机器人
发布于 2017/08/27 00:36
字数 498
阅读 152
收藏 0

一、问题

在测试环境遇到的异常信息,如下: Paste_Image.png

异常信息:

Caused by: java.lang.OutOfMemoryError: unable to create new native thread

二、问题分析

项目的实际配置:

<dubbo:provider timeout="50000" threadpool="fixed" threads="500" accepts="1000" />
  • timeout="5000":设置远程调用服务的超时时间为5000毫秒
  • threadpool="fixed":线程模型为固定大小的线程池,启动时建立线程,不关闭,一直持有
  • threads="500":线程数为500
  • accepts="1000":限制服务器端的接受的连接的最大值为1000

再看看dubbo官网上的线程模型的内容

Paste_Image.png

结合上面的异常信息,我们可以知道dispatcher的默认配置值为all(AllChannelHandler来处理消息请求),因为测试环境上部署了好几个应用,如果每个应用都占用了500个线程,那Linux机器中默认配置的线程数是不够用的,所以就导致java.lang.OutOfMemoryError: unable to create new native thread

三、问题解决方案

结合Linux线程数限制配置来进行调优

[ylp@test-web-pay-01 ~]$ vi /etc/security/limits.d/20-nproc.conf 
# Default limit for number of user's processes to prevent
# accidental fork bombs.
# See rhbz #432903 for reasoning.
*          soft    nproc     1024

root       soft    nproc     unlimited

从配置文件中我们可以知道,root用户的创建线程数是没有限制的,普通用户可以创建的线程数默认是1024,如果一个Linux机器上部署太多的应用,那么就会耗光线程数,导致java.lang.OutOfMemoryError: unable to create new native thread异常 可以使用Linux命令查看可以创建最大的进程数

[ylp@test-web-pay-01 ~]$ ulimit -u
63477

那我们一般把值设置为和ulimit相同即可 调整时要注意:

  • 尽量不要使用 root 用户来部署应用程序,避免资源耗尽后无法登录操作系统。
  • 普通用户的线程数限制值要看可用物理内存容量来配置,同时还要结合Linux机器上有多少个用户

© 著作权归作者所有

会跳舞的机器人
粉丝 6
博文 23
码字总数 28541
作品 0
广州
私信 提问
Dubbo线程池耗尽原理分析Thread pool is EXHAUSTED

对最近遇到的业务应用dubbo线程池爆满(异常:RejectedExecutionException:Thread pool is EXHAUSTED)问题进行了分析。 一、问题回顾: 业务应用dubbo配置如下: 在dubbo的spring配置中,业务...

向码而生
2017/06/21
0
0
从线程池理论浅析为什么要看源码

前言 很多时候,我都想向大家传输一个思想,那就是只有懂了原理,才能随心随心所欲写代码.而看源码,又是了解原理的一个非常重要的途径. 然而,肥朝之前的文章,大致分为三类 源码解析,穿插怎么看源...

肥朝
2018/10/13
0
0
如何修复Java中的VirtualMachineError

即使是最好的代码也会抛出错误,对开发人员而言这意味着需要知道如何修复它们。在这篇文章中,Ram Lakshmanan 介绍了许多不同类型的 VirtualMachineError 以及如何解决这些问题,在应用程序不...

java菜分享
01/28
0
0
Spring中ThreadPoolTaskExecutor的线程调度及问题

问题现象 原因分析 任务调度逻辑 汇总分析 解决方案 问题现象 在我们的系统中,使用了这样的配置来开启异步操作: spring配置 客户端开启异步代码 获取Future后的处理 然而在这种配置下,客户...

winters1224
2016/12/23
0
0
Dubbo 2.0.9 发布,阿里巴巴开源服务框架

阿里巴巴开源服务框架Dubbo2.0.9版本发布了,该版本增加了简易监控中心界面,以及修复了一些BUG。 Dubbo首页:http://code.alibabatech.com/wiki/display/dubbo/Home 下载地址:http://code...

红薯
2011/12/14
15.3K
6

没有更多内容

加载失败,请刷新页面

加载更多

蚂蚁区块链BaaS:开放在云端,落地于实体

自 2018 年 6 月上线以来,蚂蚁区块链 BaaS 不断在技术上实现突破,形成自身独特的优势,并做为行业领军者在不同领域的几十个场景实现落地。在区块链的商用时代加速到来之际,通过开放自身的...

阿里云官方博客
29分钟前
3
0
Idea cannot access【好使】

Idea中无法访问类中public方法。。 解决: idea点击左下角电脑图标,打开右边栏各种功能键 右边栏Maven Projects中点一下刷新,就是那个两个蓝的箭头组成的环 ----------------------------...

Airship
30分钟前
3
0
Spark内置图像数据源初探

作者:林武康,花名知瑕, 阿里巴巴计算平台事业部EMR团队的高级开发工程师,Apache HUE Contributor, 参与了多个开源项目的研发工作,对于分布式系统设计应用有较丰富的经验,目前主要专注于...

阿里云云栖社区
30分钟前
1
0
【面试被虐】游戏中的敏感词过滤是如何实现的?

小秋今天去面试了,面试官问了一个与敏感词过滤算法相关的问题,然而小秋对敏感词过滤算法一点也没听说过。于是,有了以下事情的发生….. 面试官开怼 面试官:玩过王者荣耀吧?了解过敏感词过...

爱编程的浪子
33分钟前
4
0
springboot之maven属性引入

<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-resources-plugin</artifactId><version>2.7</version><configuration><delimiters><delimite......

Online_Reus
34分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部