我们已将Redis(Windows port)和Microsoft Redis Session State Provider部署到我们的生产环境中。最近,我们的应用程序彻底失败了所有用户,我们在日志中反复出现以下错误:
没有可用于此操作的连接:EVAL; SocketFailure on 192.168.1.10:6379/Interactive,origin: CheckForStaleConnection,输入缓冲区:0,未完成:5,最后读取: 1s ago,last-write:0s ago,unanswered-write:1s ago,keep-alive:60s, pending:0,state:ConnectedEstablished,in:12044,ar:0, last-heartbeat:1s ago,last-mbeat:1s ago,global:1s ago,mgr: RecordConnectionFailed_ReportFailure,错误:从不; IOCP: (忙= 2,自由= 998,最小= 8,最大= 1000),工人: (Busy = 28,Free = 32739,Min = 8,Max = 32767),Local-CPU:不可用
通过StackExchange.Redis库(发生此错误),很明显我们应该在web.config中增加Session State Provider的'operationTimeoutInMilliseconds'值,以便StackExchange.Redis为连接提供更多连接在失败之前从任何瞬态错误中恢复的时间。
我的问题是:我们应该采取其他措施来尽量减少这种重复发生的风险吗?如果可能的话,我们希望再次避免这种服务中断。