Commit 35b933b6 authored by Alexander Panfilenok's avatar Alexander Panfilenok Committed by Nick Craver

Update Timeouts.md (#1301)

minor text fixes.
parent 673b70b0
...@@ -5,7 +5,7 @@ Similarly, verify you are not getting CPU bound on client or on the server box w ...@@ -5,7 +5,7 @@ Similarly, verify you are not getting CPU bound on client or on the server box w
Are there commands taking long time to process on the redis-server? Are there commands taking long time to process on the redis-server?
--------------- ---------------
There can be commands that are taking long time to process on the redis-server causing the request to timeout. Few examples of long running commands are mget with large number of keys, keys * or poorly written lua script. You can run the SlowLog command to see if there are requests taking longer than expected. More details regarding the command can be found [here](https://redis.io/commands/slowlog) There can be commands that are taking long time to process on the redis-server causing the request to timeout. Few examples of long running commands are mget with large number of keys, keys * or poorly written lua script. You can run the SlowLog command to see if there are requests taking longer than expected. More details regarding the command can be found [here](https://redis.io/commands/slowlog).
Was there a big request preceding several small requests to the Redis that timed out? Was there a big request preceding several small requests to the Redis that timed out?
--------------- ---------------
...@@ -18,8 +18,8 @@ Are you seeing high number of busyio or busyworker threads in the timeout except ...@@ -18,8 +18,8 @@ Are you seeing high number of busyio or busyworker threads in the timeout except
Asynchronous operations in StackExchange.Redis can come back in 3 different ways: Asynchronous operations in StackExchange.Redis can come back in 3 different ways:
- IOCP threads are used when asynchronous IO happens (e.g. reading from the network). - IOCP threads are used when asynchronous IO happens (e.g. reading from the network).
- From 2.0 onwards, StackExchange.Redis maintains a dedicated thread-pool that it uses for completing most `async` operations; the error message may include a an indication of how many of these workers are currently available - if this is zero, it may suggest that your system is particularly busy with asynchronous operations - From 2.0 onwards, StackExchange.Redis maintains a dedicated thread-pool that it uses for completing most `async` operations; the error message may include an indication of how many of these workers are currently available - if this is zero, it may suggest that your system is particularly busy with asynchronous operations.
- .NET also has a global thread-pool; if the dedicated thread-pool is failing to keep up, additional work will be offered to the global thread-pool, so the message may include details of the global thread-pool - .NET also has a global thread-pool; if the dedicated thread-pool is failing to keep up, additional work will be offered to the global thread-pool, so the message may include details of the global thread-pool.
...@@ -27,7 +27,7 @@ The StackExchange.Redis dedicated thread-pool has a fixed size suitable for many ...@@ -27,7 +27,7 @@ The StackExchange.Redis dedicated thread-pool has a fixed size suitable for many
.NET itself provides new global thread pool 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. .NET itself provides new global thread pool 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.
For these .NET-provided global thread pools: 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 process that work very quickly. However, if the burst of work is more than the configured "Minimum" setting, there will be some delay in processing some of the work as the ThreadPool waits for one of two things to happen For these .NET-provided global thread pools: 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 process that work very quickly. However, if the burst of work is more than the configured "Minimum" setting, there will be some delay in processing some of the work as the ThreadPool waits for one of two things to happen:
1. An existing thread becomes free to process the work 1. An existing thread becomes free to process the work
2. No existing thread becomes free for 500ms, so a new thread is created. 2. No existing thread becomes free for 500ms, so a new thread is created.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment