背景
某个早高峰,服务大量抛出线程拒绝的异常,同时没有触发自动扩容,损失了大量请求,影响了单量
原因分析
5why分析法
1、为什么服务抛出线程拒绝?
rpc线程池设置为了256,故障期间线程处理慢,短时间内线程池被打满
2、为什么线程处理变慢
新增的接口内部有异步操作,使用了新的线程池,新的线程池设置不合理,core:1,list:1000,max:10,
同时在方法最后会同步get,Future.get(),
由于早高峰及新接口放量,请求量比较大,新增接口的异步请求都hang在了阻塞队列中,因为Future.get的时候,没有设置超时时间,进而导致整个rpc请求都hang住了
3、为什么服务没有自动扩容
虽然线程拒绝,但机器本身压力不高,未触发扩容阈值