阿⾥dubbo出错提⽰ThreadpoolisEXHAUSTED问题及解
决⽅法
同事反馈,系统使⽤过程出个别时候会出现错误,系统使⽤srpingMvc+spring+mybatis+dubbo的微服务架构。检查⽇志看到如下异常信息:java dubbo
Caused by: urrent.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线程池资源消耗完了。最近也没有⼤的系统升级,⽬前服务端采⽤的是默认设置,l修改前配置。
<dubbo:protocol name="dubbo" port="20881" />
修改后
<dubbo:protocol name="dubbo" port="20881" threadpool="fixed" threads="500" />
观察⼏分钟,查看⽇志,⽐之前会少⼀些报错,异常还是存在。使⽤java的jstack命令导出⽇志再次进⾏分析。
at java.SocketInputStream.socketRead0(Native Method)
at java.SocketInputStream.socketRead(SocketInputStream.java:116)
at ad(SocketInputStream.java:171)
at ad(SocketInputStream.java:141)
at ad(SocketInputStream.java:127)
at redis.clients.sureFill(RedisInputStream.java:196)
at redis.clients.adByte(RedisInputStream.java:40)
at redis.clients.jedis.Protocol.process(Protocol.java:151)
at redis.clients.ad(Protocol.java:215)
at redis.clients.adProtocolWithCheckingBroken(Connection.java:340)
at redis.clients.IntegerReply(Connection.java:265)
at redis.clients.ists(Jedis.java:179)
发现该段代码既然有400多个,综合分析后问题基本上确认,是由于服务端使⽤redis访问超时导致dubbo请求时间响应过长,客户端请求过多导致线程数量增加。
继续定位异常代码,发现消费端有⼀个对外服务访问量过多,优化代码升级后问题解决。
总结
到此这篇关于阿⾥dubbo出错提⽰Thread pool is EXHAUSTED 解决的⽂章就介绍到这了,更多相关阿⾥dubbo出错提⽰Thread pool is EXHAUSTED内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!