C# Redis 超時問題解決

https://stackexchange.github.io/StackExchange.Redis/Timeouts

Redis本身非常快,如果感覺是因爲請求量過大想要 write in batch 的話排查方向可能錯了,這裏是 C# 本身默認設置的問題:
主要是這篇文章的 Are you seeing high number of busyio or busyworker threads in the timeout exception? 部分

關鍵就一句話,C# 的 Task 和 網絡連接這些線程都是從線程池中取出來的,如果咱們的繁忙線程數量很大,它會有一個增長的限制,即每 500ms 增加一個線程。如果一瞬間進來太多請求,那麼就會因爲線程的增長太慢導致排隊,結果導致 Redis 超時

解決方案之一是配置環境變量

COMPlus_ThreadPool_ForceMinWorkerThreads=250

或者別的什麼方案。
關鍵就是這個增長的 threshold — MinWorkerThreads 導致了線程數超過這個數量以後,500ms只能新建一個線程,就會導致超時

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章