亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

StackExchange.Redis.RedisTimeoutException:等待響應超時

StackExchange.Redis.RedisTimeoutException:等待響應超時

C#
慕仙森 2023-09-24 15:51:25
我有一個包含 6 個實例的 Redis 集群,3 個主實例和 3 個從實例。我的 ASP .NET Core 應用程序使用它作為緩存。有時我會收到這樣的錯誤:StackExchange.Redis.RedisTimeoutException: Timeout awaiting response (outbound=0KiB, inbound=5KiB, 5504ms elapsed, timeout is 5000ms), command=GET, next: GET [email protected], inst: 0, qu: 0, qs: 6, aw: False, rs: DequeueResult, ws: Idle, in: 0, in-pipe: 5831, out-pipe: 0, serverEndpoint: 5.178.85.30:7002, mgr: 9 of 10 available, clientName: f0b7b81f5ce5, PerfCounterHelperkeyHashSlot: 9236, IOCP: (Busy=0,Free=1000,Min=2,Max=1000), WORKER: (Busy=10,Free=32757,Min=2,Max=32767), v: 2.0.601.3402 (Please take a look at this article for some common client-side issues that can cause timeouts: https://stackexchange.github.io/StackExchange.Redis/Timeouts) (Most recent call last)
查看完整描述

1 回答

?
九州編程

TA貢獻1785條經驗 獲得超4個贊

正如我從您的異常消息中看到的,您的最小工作進程數對于您擁有的流量來說太低了。

工人:(忙=10,空閑=32757,最小=2,最大=32767)

當這個異常發生時,你有 10 個繁忙的工作線程,而你有 2 個工作線程需要啟動。

當您的應用程序用完可用線程來完成一項操作時,.NET 會啟動一個新線程(當然,直到達到最大值)。并稍等一下,看看是否需要額外的工作線程。如果您的應用程序仍然需要工作線程,則 .NET 會啟動另一個工作線程。然后另一個,然后另一個……但這需要時間。它不會在 0 毫秒內發生。通過查看異常消息,我們可以看到 .NET 創建了 8 個額外的工作線程 (10 - 2 = 8)。在創建過程中,這個特定的 Redis 操作一直在等待并最終超時。

ThreadPool.SetMinThreads(Int32, Int32)您可以在應用程序開頭使用方法來設置最小線程數。ThreadPool.SetMinThreads(10, 10)我建議您在測試時開始并進行調整。

查看完整回答
反對 回復 2023-09-24
  • 1 回答
  • 0 關注
  • 182 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號