問題
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