StackExchange.Redis.RedisTimeoutException:在将消息写入输出缓冲区之前已达到超时



字符串:70036 01:11:34错误GetItemFromSessionStore=>StackExchange.Redis.RedisTimeoutException:在将消息写入输出缓冲区之前达到超时,并且未发送(5000ms,inst=37,qs=37,in=29426,active=EVAL(,inst:37,qs:37,in:0,serverEndpoint:未指定/***Redis.Redis.cache.windows.net:6380,mgr:10个可用,客户端名称:******,IOCP:(忙=3,空闲=997,最小=4,最大=1000(,WORKER:(忙=5582,空闲=27185,最小=5680,最大=32767(,v:2.0519.65453(请参阅本文,了解一些可能导致超时的常见客户端问题:https://stackexchange.github.io/StackExchange.Redis/Timeouts)位于C:\projects\StackExchange Redis\src\StackExchange.RRedis\ConnectionMultiplexer.cs:line 2175中的StackExchange.Ris.ConnectionMultiplexer.ExecuteSyncImpl[T](消息消息消息,ResultProcessor`1处理器,ServerEndPoint服务器(位于C:\projects\StackExchange Redis\src\StackExchange.RRedis\RedisBase.cs:line 54中的StackExchange.Ris.RRedisBase.ExecuteSync[T](消息消息消息,ResultProcessor1处理器,ServerEndPoint服务器(位于C:\projects\StackExchange Redis\src\StackExchange.RRedis\RedisDatabase.cs:line 1134 中的StackExchange.Rdis.RRedisDatabase.ScriptEvaluate(字符串脚本、RedisKey[]键、RedisValue[]值、CommandFlags标志(

当我们收到大量请求时,我们会遇到很多这样的错误。当记录超时异常时,我们确实有CPU和非常高的线程数。

根据文件,

qsQueue等待响应:{int}There当前有x个操作正在等待redis服务器的答复。

inInbound Bytes:{long}there是从redis 的输入流中等待读取的x字节

Redis服务器似乎能够很好地处理负载。那么,有人能解释这个错误的含义吗?

是的,可能是线程不足。您可以设置最小阈值,这样它就不会耗尽线程。基本理论是,操作系统必须等待500毫秒,才能在达到最小阈值后启动另一个线程。

ThreadPool.SetMinThreads(minWorker, minIoc)

https://learn.microsoft.com/en-us/dotnet/api/system.threading.threadpool.setminthreads?view=net-6.0

确保Redis已启动并运行。

在我的情况下,我只是忘记了在运行应用程序之前将Redis作为Docker容器运行。

相关内容

  • 没有找到相关文章

最新更新