其他分享
首页 > 其他分享> > 生产线程池爆炸

生产线程池爆炸

作者:互联网

生产线程池开始抛出一系列reject异常,具体日志如下。

 

 

项目整体请求量不大,所以怀疑个别任务的消费速度过慢导致,因这个线程池在项目各处大量分散使用,不能快速定位具体是哪个任务。

 

最后通过arthas定位到这个task。

暂时下掉相关逻辑问题得到解决。

第二天排查问题原因是有个http请求,没有设置超时时间,下游的服务刚好数据库连接出现问题,超时30s后才响应500,导致线程池的任务在这里堆积。

启发:

1.耗时较高的任务不要随便丢线程池,可能会影响其他业务,对第三方的服务最好有熔断降级策略。

2.对于关键的异步,可以考虑用mq来实现,这样至少不会被reject。

说到mq,consumer本地也是有线程池的,会不会也会相互影响呢:

 

 

 

 

可以看到consumer的线程池是以consumerGroup进行隔离的。

那framework里是怎么定义consumerGroup的呢:

 

默认是以项目名作为groupName的。那么不同topic的线程池其实是同一个,还是会相互影响。

 

标签:程池,爆炸,consumerGroup,生产线,线程,reject,mq,consumer
来源: https://www.cnblogs.com/lccsblog/p/13646542.html