8 29 實戰技巧 如何設定執行緒池

2022-01-19 04:57:20 字數 1745 閱讀 8109

hystrix最重要的乙個點。

執行緒池具體怎麼設定不知道?裡面的數量是怎麼來的。和對於我們來說是乙個非常大的困惑。

hystrix的執行緒池在工作中設定的時候,有哪些技巧?

首先在我們業務系統中,有個很重要的指標就是qps,更精確的說,他其實分三大類,包括rps、tps、qps這三個分別是什麼呢?乙個是操作的次數就是單位時間內操作的次數,單位時間內查詢的次數,單位時間內進行增刪改一類的次數,

我們執行緒池設定的數量和系統的qps是緊密關聯的。qps是統稱,大家理解意思就可以了。

舉個例子,我希望我的系統在2千到5千qps,2千到5千在網際網路的系統已經不是什麼太大的問題了。非常簡單。但是正常的業務系統,2千到5千的qps不可能是單節點處理的。

一般來講,比如說我有10個節點,10個節點指的是10個容器,或者是10個機器,配置都是一樣的。部署微服務,部署10份。然後通過負載均衡進行**。這樣就相當於它平攤了我們的業務流量。也就是平攤了我們qps的需求。

所以大家就可以想,比如說我現在有個2千的qps,緊接著我有100臺機器,那麼這個時候每台機器理論上的qps是20.當然它比實際還要多,20個qps在我每台機器上單獨設定應該是什麼樣子呢?

比如說我們的tp99,正常是200毫秒,我每台機器負載的量大概是20到30qps,下面這裡寫的是30rps, 我們這裡可以理解為30qps,每乙個響應大概在200毫秒上下,

30qps 乘以 200毫秒。乘完之後,就知道單位時間內我大概需要6個執行緒才能滿足你現在的業務要求。就是你的峰值要求。但是因為執行緒的切換和處理,它本身是有業務開銷的,以及有一些不確定的情況,可能導致一些執行緒的浪費,在這種情況下6個執行緒不足以滿足我們的要求,所以這個時候她需要加一些冗餘量,冗餘量子啊hystrix裡面預設給你加到了10.

也就是說你的系統是200毫秒以內返回,那麼hysrix給你的預設值就可以滿足你30rps的操作要求。

冗餘一般在0.3到0.5之間,

執行緒佇列次數的限制。假如你的執行緒池預設是10,1.5倍到2倍之間佇列長度就可以

基本就兩個變數,乙個是qps的需求量,這是對你系統要求的變數。

這是你系統開發的功底問題。例如有的人能開發到400毫秒,有的人500毫秒,執行緒計算出來後,再打個0.3到0.5之間的冗餘。

然後就是佇列的長度,佇列長度說實話,可設可不設。如果上面的執行緒池數量設定了就已經可以滿足你當前的需求,如果不滿足就可以再設定下佇列數

設定在1.5到2倍之間。因為它本身並不會給你帶來什麼額外的開銷。它只是給你做了乙個快取佇列。

以上就是hystrix給我們的一些建議。這些足以讓你完成一些初始的設定。這些都設定完了就要去線上做壓力測試。測試完成後,看看能不能滿足的你要求。不行就再回來設定,這是乙個不斷調整的過程。

vue高階實戰技巧 如何優化專案

require.context 批量require檔案 1 以業務為模組建立相應的模組目錄 mode1 模組資料夾 pages 模版資料夾 model1.index.vue 模版檔案 model1.second.vue 模版檔案 index.routes.js 此模組的路由檔案index.route...

執行緒池引數設定技巧

一 threadpoolexecutor的重要引數 queuecapacity 任務佇列容量 阻塞佇列 maxpoolsize 最大執行緒數 keepalivetime 執行緒空閒時間 allowcorethreadtimeout 允許核心執行緒超時 rejectedexecutionhandler...

執行緒池設定 如何合理設定執行緒池的核心執行緒數?

當執行緒池的核心執行緒數量過大或者過小有沒影響?如何合理地設定執行緒池的核心執行緒的數量?這個是在日常開發中程式設計師在使用執行緒池時經常需要考慮的問題,下面具體介紹下。1 當執行緒池的核心執行緒數量過大或者過小的影響 當執行緒池中核心執行緒數量過大時,執行緒與執行緒之間會爭取cpu資源,這樣就會導...