【.NetCore】StackExchange.Redis的Timeout問題



最近在公司的專案上遇到一個問題,當QA或者APP工程師瞬間併發請求,測試環境居然就開始HTTP500錯誤。

而這個錯誤是Redis Timeout,很納悶為什麼redis打一下就掛了,不過以噴錯的錯誤訊息來看,感覺閒置的資源還很多,怎麼就這樣掛了呢?

System.TimeoutException: Timeout performing GET MyKey, inst: 2, mgr: Inactive,
queue: 6, qu: 0, qs: 6, qc: 0, wr: 0, wq: 0, in: 0, ar: 0,
IOCP: (Busy=0,Free=1000,Min=4,Max=1000),
WORKER: (Busy=57,Free=997,Min=4,Max=1000)

 

參考到這篇文章,原來是有一段是說當執行緒到達最小執行緒池數量時,已經都忙碌時會去取可用線程並等待500ms,如果取不到線程就創立新的線程,當量一多時就會塞車了,所以這邊要考慮一般網站瞬間及目標乘載量來去設定這邊的數值,因為設定太高網站效能會降低,設的太低就會發生time out的問題。

 

設定的語法為


ThreadPool.SetMinThreads(50, 50)

 

這邊要注意是以單一核心來設定,如果你有四核心,實際上就是50*40最小為200個。

回家思考後,在找尋更完整的資源,發現以下文章有更完整的介紹

點我

可以去看看喔

 

台北人,軟體工程師一枚,工作閒暇之餘記錄生活、分享整理資訊。
Posts created 105

發表迴響

Related Posts

Begin typing your search term above and press enter to search. Press ESC to cancel.

Back To Top