使用StackExchange.Redis的SETNX超时

时间:2017-04-08 01:10:34

标签: redis timeout stackexchange.redis

在野外捕捉到这个随机异常:

  

System.Web.HttpUnhandledException(0x80004005):类型异常   抛出'System.Web.HttpUnhandledException'。 --->   System.TimeoutException:执行SETNX的超时   GeoIP。[删除],inst:1,mgr:不活动,错误:从不,队列: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),工人:   (Busy = 1,Free = 32766,Min = 2,Max = 32767),Local-CPU:不可用(请   看看这篇文章,了解一些常见的客户端问题   可能导致超时:   https://github.com/StackExchange/StackExchange.Redis/tree/master/Docs/Timeouts.md)   在   StackExchange.Redis.ConnectionMultiplexer.ExecuteSyncImpl [T](消息   消息,ResultProcessor 1 processor, ServerEndPoint server) at StackExchange.Redis.RedisBase.ExecuteSync[T](Message message, ResultProcessor 1处理器,ServerEndPoint服务器)

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

referenced cached document我可以看出它看起来很好,或许Local-CPU不可用的值是问题吗?

有谁知道这会引起什么?

2 个答案:

答案 0 :(得分:0)

当您查看正在接收的错误时,您是否看到任何超时错误,其中BUSY值大于IOCP或工作线程池的MIN?如果是这样,线程池限制可能是原因。这通常发生在突发场景下。这通常伴随着高CPU,这也可能导致超时。这里解释了Threadpool限制:https://gist.github.com/JonCole/e65411214030f0d823cb#file-threadpool-md

此外,以下是一些最佳做法:https://gist.github.com/JonCole/925630df72be1351b21440625ff2671f#best-practices-for-azure-redis

答案 1 :(得分:0)

示例

SET key value EX timeout NX

SET hello world EX 100 NX