问题
Task java.util.concurrent.FutureTask@27d69e27 rejected from java.util.concurrent.ThreadPoolExecutor@61d1c14e[Running, pool size = 10, active threads = 10, queued tasks = 0, completed tasks = 62058]
html
问题缘由
- 并发数过大,超过了线程池线程的处理能力;
- 线程池未启用缓冲队列;
排查
hystrix配置
hystrix:
threadpool:
default:
coreSize: 10
配置项 |
说明 |
coreSize |
核心线程数:10 |
default |
说明配置的全部的feigin client |
hystrix 官方配置
配置项 |
默认值 |
说明 |
maxQueueSize |
-1, 默认不开启缓冲区;设置为-1,那么使用SynchronousQueue |
BlockingQueue的最大队列数 |
coreSIze |
10 |
工做线程数,同Java线程池 |
maximumSize |
10 |
线程池最大值 |
queueSizeRejectionThreshold |
5 |
缓冲区拒绝服务阈值,如缓冲区为100,阈值为80.则达到80的话,缓冲区就不容许写入了 |
keepAliveTimeMinutes |
1 |
设置存活时间,单位分钟。若是coreSize小于maximumSize,那么该属性控制一个线程从实用完成到被释放的时间。 |
参考
踩坑 Spring Cloud Hystrix 线程池队列配置 如何设置线程池大小java
官方配置项 服务容错保护断路器Hystrix之五:配置git