The content from this GIST has been moved to official Azure Cache for Redis Documentation. The new location is https://docs.microsoft.com/azure/azure-cache-for-redis/cache-troubleshoot-client
Please update your bookmarks.
The content from this GIST has been moved to official Azure Cache for Redis Documentation. The new location is https://docs.microsoft.com/azure/azure-cache-for-redis/cache-troubleshoot-client
Please update your bookmarks.
The content from this GIST has been moved to official Azure Cache for Redis Documentation. The new location is https://docs.microsoft.com/azure/azure-cache-for-redis/cache-how-to-troubleshoot#server-side-troubleshooting
Please update your bookmarks.
An application is using StackExchange.Redis to connect to their Redis instance and everything is working fine until suddenly exceptions like this start happening.
It was not possible to connect to the redis server(s); to create a disconnected multiplexer, disable AbortOnConnectFail.
at StackExchange.Redis.ConnectionMultiplexer.ConnectImpl(Func`1 multiplexerFactory, TextWriter log)
at MyApp.Web.Redis.StackExchangeClientConnection..ctor(ProviderConfiguration configuration)
at MyApp.Web.Data.GetInventoryData()
The Cause
The CLR ThreadPool has two types of threads - "Worker" and "I/O Completion Port" (aka IOCP) threads.
Task.Run(…)
or ThreadPool.QueueUserWorkItem(…)
methods. These threads are also used by various components in the CLR when work needs to happen on a background thread.The thread pool provides new worker threads or I/O completion threads on demand (without any throttling) until it reaches the "Minimum" setting for each type of thread. By default, the minimum number of threads is set to the number of processors on a system.
Once the number of existing (busy) threads hits the "minimum" number of threads, the ThreadPool will throttle the rate at which is injects new threads to one thread per 500 milliseconds. This means that if your system gets a burst of work needing an IOCP thread, it will proces