代碼下載地址: https://gitee.com/jikeh/JiKeHCN-RELEASE.git
依賴系統:
項目名:spring-boot-hystrix-thread
1、場景設計
假設,一個線程池,大小是10個,隊列大小是6個
先進去線程池的是10個請求,然後有6個請求進入等待隊列,線程池裡有空閒,等待隊列中的請求如果還沒有timeout,那麼就進去線程池去執行
10 + 6 = 16個請求之外,2個請求,直接會被reject掉,限流,直接走fallback
2、策略配置
.withCoreSize(10)//線程池大小
/**
* 如果withMaxQueueSize<withqueuesizerejectionthreshold> */
.withMaxQueueSize(6)//緩存隊列大小:默認為-1,即 沒有緩存隊列
.withQueueSizeRejectionThreshold(8)) //阻塞隊列大小:默認是5個
3、測試代碼
private static void testResourceIsFull(){
for(int i = 0; i < 18; i++) {
new TestThread(i).start();
}
}
private static class TestThread extends Thread {
private int index;
public TestThread(int index) {
this.index = index;
}
@Override
public void run() {
String response = HttpClientUtils.sendGetRequest("http://localhost:8022/get/ad?adId=1");
}
}
4、實驗實錄:
10個正常請求
2個降級請求
6個正常請求(5s之後打印,因為我們設置了睡眠時間)
![Hystrix進階攻略之多線程測試資源佔滿問題,降級策略測試](http://p2.ttnews.xyz/loading.gif)
閱讀更多 極客慧 的文章