Stackexchange.Redis超时和socketfailures
我使用Azure Redis(使用Stackexchange.Redis)作为缓存存储,它通常工作正常。 但是我偶尔会遇到超时错误,我无法确定它为什么会发生。
我的redis连接设置:
value="dev.redis.cache.windows.net,ssl=true,password=secret,abortConnect=false,syncTimeout=3000"
我在同一秒(多次调用)中得到所有这些exception:[我在GET操作上也得到了这些。 几乎所有这些exception都在StringSet和StringGet上。 我很少在HashSets或HashGets上获得例外]
Timeout performing SET {key}, inst: 1, mgr: ExecuteSelect, queue: 6, qu=0, qs=6, qc=0, wr=0/0, in=0/0 SocketFailure on SET SocketFailure on SET No connection is available to service this operation: SET
我猜测设置对象花费的时间比预期的要长,这可能是由于对象很大所以我可能会增加同步时间,但这会隐藏其他一些问题吗?
我只是在对stackexchange.redis的同步调用中得到这些exception,当调用异步时我没有看到exception。
堆栈跟踪:
StackExchange.Redis.RedisConnectionException: SocketFailure on SET at StackExchange.Redis.ConnectionMultiplexer.ExecuteSyncImpl[T](Message message, ResultProcessor`1 processor, ServerEndPoint server) i at StackExchange.Redis.RedisBase.ExecuteSync[T](Message message, ResultProcessor`1 processor, ServerEndPoint server) at StackExchange.Redis.RedisDatabase.StringSet(RedisKey key, RedisValue value, Nullable`1 expiry, When when, CommandFlags flags) at calling method
编辑:我正在使用StackExchange.Redis 1.0.414包,我正在使用MessagePack来序列化我的对象
超时通常是由少数事情之一引起的。 这里有些例子
- 客户端或服务器CPU达到100%
- 配置不当的ThreadPool设置,结合突发流量
- 客户端向服务器发送昂贵的命令。
- 最大化网络带宽(在客户端或服务器上)
客户端问题的提示: https : //gist.github.com/JonCole/db0e90bedeb3fc4823c2
服务器端问题的提示: https : //gist.github.com/JonCole/9225f783a40564c9879d
我建议升级到更新版本的StackExchange.Redis。 版本1.1.603在超时错误消息中有一些更详细的诊断信息,可以帮助您识别我上面列出的一些常见客户端。
至于Socket故障,我见过的客户端和服务器之间连接丢失的几个常见原因是:
上述就是C#学习教程:Stackexchange.Redis超时和socketfailures分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
- 扩展客户端 – 在Azure中扩展客户端应用程序时,我看到了简短的客户端连接问题。
- 当Redis被修补时,会有一些连接闪烁。 Azure Redis修补程序在此解释: https : //gist.github.com/JonCole/317fe03805d5802e31cfa37e646e419d
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/998417.html