Investigating timeout exceptions in StackExchange.Redis for Azure Redis Cache

# Diagnostic timeout exceptions in StackExchange.Redis for Azure Redis Cache ## Problems ![Picture-01](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiZmFRsyRMH8kfXueRPEzjoabT-ohnqbNNEnx4NiUi60u-j2AKobZTPqT2HNH7R0_-DaSUjIDNmn-wAg1WPdB2UNoRbH09wFINwc36nlTRSaQm2Dd8VKizeCe_zu77N5WjmFm5O59V8PkV1/s1600/Diagnostic-timeout-exceptions-for-redis-01.png) >Timeout performing HEXISTS XXX.YYY:OAuthTokenStorages:AccessToken, inst: 267, mgr: Inactive, err: never, queue: 0, qu: 0, qs: 0, qc: 0, wr: 0, wq: 0, in: 0, ar: 0, clientName: RD__________F9, serverEndpoint: Unspecified/xxx.redis.cache.windows.net:6380, keyHashSlot: 1758, IOCP: (Busy=0,Free=1000,Min=1,Max=1000), WORKER: (Busy=45,Free=32722,Min=1,Max=32767) (Please take a look at this article for some common client-side issues that can cause timeouts: http://stackexchange.github.io/StackExchange.Redis/Timeouts) ![Picture-02](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjIXtx8dOfcuMK6suzswKbCU59eUVEX28TjoRhnwq9xyGmtrzuAQoHxDj_S5uzAe7trKo1jwJNkBgUv0_FfBVLArh6fnlFBkE14f_iN6zcvjULopWrUZbGZBzefjajvS7WgaBOhn4Z4ZM9G/s1600/Diagnostic-timeout-exceptions-for-redis-02.png) >Timeout performing ZRANGEBYSCORE issuenumber:1, inst: 1, mgr: Inactive, err: never, queue: 4, qu: 0, qs: 4, qc: 0, wr: 0, wq: 0, in: 287, ar: 0, clientName: RD00155DB10567, serverEndpoint: Unspecified/jsti-webapi-redis.redis.cache.windows.net:6380, keyHashSlot: 5222, IOCP: (Busy=0,Free=1000,Min=1,Max=1000), WORKER: (Busy=12,Free=32755,Min=1,Max=32767) (Please take a look at this article for some common client-side issues that can cause timeouts: http://stackexchange.github.io/StackExchange.Redis/Timeouts) > --- `Problem`: **Singleton of Redis Multiplextor?** During the load test, we kept monitoringthe statistics of Redis, App Service Plan and VM of MS-SQL. The CPU, memory and disk I/O loading seemed to be ok. So maybe there are something wrong with network, or with our codes to manipulate Redis. I added logs in constructor of Redis multiplextor to make sure that we kept singleton in each web sites. It passed. --- `Problem`: **Too many busy worker threads** [According to this section](https://gist.github.com/JonCole/db0e90bedeb3fc4823c2#burst-of-traffic): Burst of traffic: Notice that in the "IOCP" section and the "WORKER" section you have a "Busy" value that is greater than the "Min" value. This means that your threadpool settings need adjusting. [And according to JonCole's another post about ThreadPool](https://gist.github.com/JonCole/e65411214030f0d823cb): in my first exception, there are 45 busy worker threads now and our system is configured to allow 1 minimum worker thread. So our system would cause (45-1)*500ms = 22 seconds delay...OMG. `Resolution`: Currently we use P1 pricing tier of WebApp. It's single core with 1.75GB RAM. So maybe we should increase the "minIoThreads" and "minWorkerThreads" to 100 or more in configuration settings. --- `Problem`: **Lack async** Obviously, but I have to do more test about the effect between sync and async in Redis utilization. --- `Mysterious`: BTW, the default settings of "minIoThreads" and "minWorkerThreads" are 4. Why the settings in our system became 1? --- ## Reference [https://stackexchange.github.io/StackExchange.Redis/Timeouts](https://stackexchange.github.io/StackExchange.Redis/Timeouts) [Investigating timeout exceptions in StackExchange.Redis for Azure Redis Cache](https://azure.microsoft.com/zh-tw/blog/investigating-timeout-exceptions-in-stackexchange-redis-for-azure-redis-cache/) [Diagnosing Redis errors on the client side](https://gist.github.com/JonCole/db0e90bedeb3fc4823c2)

留言

這個網誌中的熱門文章

修改Skype存放對話記錄、檔案的資料夾位置

[C# .Net] 因應資料庫Byte長度,修改中英混雜的字串長度

[C# .Net] 是否需要用 BufferedStream 當做 FileStream 的緩衝?