2017-04-08 39 views
0

在野外捕获该随机异常:SETNX超时与StackExchange.Redis

System.Web.HttpUnhandledException(0X80004005):类型 'System.Web.HttpUnhandledException' 引发的异常。 ---> System.TimeoutException:执行SETNX的超时 GeoIP。[删除],inst:1,mgr:非活动,err:从不,队列:2, qu:0,qs:2,qc:0,wr: 0,wq:0,in:0,ar:0,clientName: PRD-VM-WEB-1,serverEndpoint: 未指定/ [删除] .redis.cache.windows.net:6380,keyHashSlot: 3519,IOCP :(忙= 0,空闲= 1000,最小= 2,最大= 1000),工作者: (忙= 1,空闲= 32766,最小= 2,最大= 32767),本地CPU:不可用(请 看在本文一些常见客户端的问题的是 可以导致超时:在 StackExchange.Redis.ConnectionMultiplexer.ExecuteSyncImpl [T](消息 https://github.com/StackExchange/StackExchange.Redis/tree/master/Docs/Timeouts.md)消息,ResultProcessor 1 processor, ServerEndPoint server) at StackExchange.Redis.RedisBase.ExecuteSync[T](Message message, ResultProcessor 1处理器,ServerEndPoint服务器)

使用StackExchange.Redis,部署在Azure上。

从我能从referenced cached document得知它看起来不错,或许Local-CPU不可用的值是问题?

有没有人知道可能导致这种情况?

回答

0

当您查看收到的错误时,是否看到BUSY值大于IOCP或辅助线程池的MIN的任何超时错误?如果是这样,线程池节流可能是原因。这通常发生在突发情况下。这通常伴随着高CPU,这也会导致超时。线程池节流在这里解释:https://gist.github.com/JonCole/e65411214030f0d823cb#file-threadpool-md

另外,这里有一些最佳实践:https://gist.github.com/JonCole/925630df72be1351b21440625ff2671f#best-practices-for-azure-redis