阿里dubbo出错提示Thread pool is EXHAUSTED问题及解决方法

 更新时间:2020年08月06日 10:22:32   作者:程序员进进  
这篇文章主要介绍了阿里dubbo出错提示Thread pool is EXHAUSTED的问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

同事反馈,系统使用过程出个别时候会出现错误,系统使用srpingMvc+spring+mybatis+dubbo的微服务架构。检查日志看到如下异常信息:

Caused by: java.util.concurrent.RejectedExecutionException: Thread pool is EXHAUSTED! Thread Name: DubboServerHandler-10.8.64.57:20880, Pool Size: 200 (active: 200, core: 200, max: 200, largest: 200), Task: 5823

通过字面大致意思是,dubbo线程池资源消耗完了。最近也没有大的系统升级,目前服务端采用的是默认设置,dubbo.xml修改前配置。

<dubbo:protocol name="dubbo" port="20881" />

修改后

<dubbo:protocol name="dubbo" port="20881" threadpool="fixed" threads="500" />

观察几分钟,查看日志,比之前会少一些报错,异常还是存在。使用java的jstack命令导出日志再次进行分析。

at java.net.SocketInputStream.socketRead0(Native Method)
 at java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
 at java.net.SocketInputStream.read(SocketInputStream.java:171)
 at java.net.SocketInputStream.read(SocketInputStream.java:141)
 at java.net.SocketInputStream.read(SocketInputStream.java:127)
 at redis.clients.util.RedisInputStream.ensureFill(RedisInputStream.java:196)
 at redis.clients.util.RedisInputStream.readByte(RedisInputStream.java:40)
 at redis.clients.jedis.Protocol.process(Protocol.java:151)
 at redis.clients.jedis.Protocol.read(Protocol.java:215)
 at redis.clients.jedis.Connection.readProtocolWithCheckingBroken(Connection.java:340)
 at redis.clients.jedis.Connection.getIntegerReply(Connection.java:265)
 at redis.clients.jedis.Jedis.exists(Jedis.java:179)

    发现该段代码既然有400多个,综合分析后问题基本上确认,是由于服务端使用redis访问超时导致dubbo请求时间响应过长,客户端请求过多导致线程数量增加。

继续定位异常代码,发现消费端有一个对外服务访问量过多,优化代码升级后问题解决。

总结

到此这篇关于阿里dubbo出错提示Thread pool is EXHAUSTED 解决的文章就介绍到这了,更多相关阿里dubbo出错提示Thread pool is EXHAUSTED内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SpringBoot中添加监听器及创建线程的代码示例

    SpringBoot中添加监听器及创建线程的代码示例

    这篇文章主要介绍了SpringBoot中如何添加监听器及创建线程,文中有详细的代码示例,具有一定的参考价值,需要的朋友可以参考下
    2023-06-06
  • Java设计模式之原型模式详细解读

    Java设计模式之原型模式详细解读

    这篇文章主要介绍了Java设计模式之原型模式详细解读,原型模式属于创建型设计模式,用于创建重复的对象,且同时又保证了性能,该设计模式的好处是将对象的创建与调用方分离,需要的朋友可以参考下
    2023-12-12
  • SpringBoot文件分片上传的示例代码

    SpringBoot文件分片上传的示例代码

    分片上传在很多地方都可以使用的到,本文主要介绍了SpringBoot文件分片上传的示例代码,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-12-12
  • JPA中@ElementCollection使用示例详解

    JPA中@ElementCollection使用示例详解

    在JPA中,@ElementCollection注解主要用于映射集合属性,例如List、Set或数组等集合属性,以及Map结构的集合属性,每个属性值都有对应的key映射,这篇文章主要介绍了JPA中@ElementCollection使用,需要的朋友可以参考下
    2023-11-11
  • 详解Java中int和Integer的区别

    详解Java中int和Integer的区别

    这篇文章主要介绍了Java中int和Integer的区别文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • 详解Spring中使用@within与@target的区别

    详解Spring中使用@within与@target的区别

    这篇文章主要介绍了Spring中使用@within与@target的一些区别,本文通过项目案例给大家详细分析,给大家介绍的非常详细,代码简单易懂,需要的朋友可以参考下
    2021-09-09
  • Java Enum的简单使用

    Java Enum的简单使用

    这篇文章主要为大家详细介绍了Java Enum的简单使用,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-09-09
  • Java构建高效结果缓存方法示例

    Java构建高效结果缓存方法示例

    这篇文章主要介绍了Java构建高效结果缓存方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • Java面试题冲刺第八天--Spring框架2

    Java面试题冲刺第八天--Spring框架2

    这篇文章主要为大家分享了最有价值的三道Spring框架面试题,涵盖内容全面,包括数据结构和算法相关的题目、经典面试编程题等,感兴趣的小伙伴们可以参考一下
    2021-07-07
  • Java中YYYY-MM-dd与yyyy-MM-dd的区别及跨年问题

    Java中YYYY-MM-dd与yyyy-MM-dd的区别及跨年问题

    YYYY-MM-dd可能会导致跨年周的日期被归属到错误的年份, yyyy-MM-dd总是表示实际的日历年份,无论日期所在的周是否跨年,本文就来介绍一下两者的区别,感兴趣的可以了解一下
    2024-01-01

最新评论