上周末我们的测试环境看到一些虚拟机开始记录超时,其中未发送的队列一直在增长:
超时执行GET 0:B:ac64ebd0-3640-4b7b-a108-7fd36f294640,inst: 0,mgr:ExecuteSelect,队列号:35199,qu:35199,qs:0,qc:0,wr:0, wq:0,in:0,ar:0,IOCP :( Busy = 2,Free = 398,Min = 4,Max = 400),WORKER: (忙碌= 5,免费= 395,最小值= 4,最大= 400)
超时执行SETEX 0:B:pfed2b3f5-fbbf-4ed5-9a58-f1bd888f01, inst:0,mgr:ExecuteSelect,队列:35193,qu:35193,qs:0,qc:0, wr:0,wq:0,in:0,ar:0,IOCP :( Busy = 2,Free = 398,Min = 4,Max = 400), 工人:(忙碌= 6,自由= 394,最小= 4,最大= 400)
我已经阅读了很多关于分析这些内容的帖子,但大多数时候它并没有涉及未发送的消息队列增长。在此期间未记录任何连接错误; AppPool回收解决了这个问题。有没有人以前见过这个问题?
一些可能相关的额外信息:
答案 0 :(得分:0)
我遇到了同样的问题。
为了研究问题,我们记录ConnectionMultiplexer的ConnectionCounters,每隔10秒进行监控。
它仅显示增长的pendingUnsentItems,这意味着StackExchange.Redis不会从套接字发送/接收。
completedAsynchronously completedSynchronously pendingUnsentItems responsesAwaitingAsyncCompletion sentItemsAwaitingResponse
1 10 4 0 0
1 10 28 0 0
1 10 36 0 0
1 10 51 0 0
1 10 65 0 0
1 10 72 0 0
1 10 85 0 0
1 10 104 0 0
1 10 126 0 0
1 10 149 0 0
1 10 169 0 0
1 10 190 0 0
1 10 207 0 0
1 10 230 0 0
1 10 277 0 0
1 10 296 0 0
...snip
1 10 19270 0 0
1 10 19281 0 0
1 10 19291 0 0
1 10 19302 0 0
1 10 19313 0 0
我猜套接字编写器线程已经停止了吗?
我的环境
答案 1 :(得分:0)
看起来在版本5.5-5.7之间使用New Relic .NET APM时出现问题,并在5.8中修复。