一次线程池引发的线上故障分析

一、问题背景 线上监控到大量接口报错,定位到异常机器,将异常机器隔离后,线上服务恢复正常。 拿到业务报错日志如下 异常信息显示Dubbo线程池活跃线程数已经达到最大线程数200,说明线程池资源已经耗尽。 二、问题排查 线程池资源耗尽,猜测Dubbo线程都被某个耗时方法阻塞了,或者线上有异常突发流量。 查看线上监控,发现服务请求流量正常,猜测Dubbo线程是被阻塞住了。 2.1 Dubbo线程为何被阻塞? 通过jstack获取Dubbo线程堆栈信息,发现大量Dubbo线程的线程状态都为WAITING状态,阻塞在CompletableFuture#join。 找到相关代码行,…

Read More