记录一次线上线程池爆了的问题

背景:线上不停的有超时告警和错误告警
现象:查看错误日志有大量的
cause: org.apache.dubbo.remoting.RemotingException: Server side(xx.xx.xxx.xxx,20993) thread pool is exhausted, detail msg:Thread pool is EXHAUSTED! Thread Name: DubboServerHandler-xx.xx.xxx.xxx:20993, Pool Size: 200 (active: 198, core: 200, max: 200, largest: 200), Task: 17529516 (completed: 17529318), Executor status:(isShutdown:false, isTerminated:false, isTerminating:false), in dubbo://xx.xx.xxx.xxx:20993!

排查思路:
1、检查是否流量有激增
排查结果:没有特别大的波动
2、排查调用下游的服务(包括MySQL)有没有时延激增
排查结果:没有
3、检查容器的CPU/内存/网络/磁盘各个参数
排查结果:容器的没有
4、排查宿主机的CPU/内存/网络/磁盘各个参数
排查结果:磁盘的IO满了。最后确认是运维在做磁盘集群升级

针对各种原因导致的线程池满了的情况的处理方式
1、流量激增的原因导致的
解决方案:
1、消费者加缓存,不要每次都调用 dubbo 接口; 这种针对实时性要求不高,变化不大的数据
2、修改 dubbo 线程池配置,200 -> 300 ,但不要太大 这个要看自己的服务配置
3、新建 pod 分摊流量

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容