网站关键字优化,成都装修公司排名前十强有哪些,痘痘怎么去除有效果,wordpress优化指南问题#xff1a;并发稍微多的情况下Redis偶尔返回超时StackExchange的Redis类库#xff0c;用的较多#xff0c;但偶尔报的问题非常让人迷惑#xff0c;访问超时#xff0c;队列XXX…问题出在Redis服务器吗#xff1f;可是其他应用访问都正常啊#xff0c;难道要把这个类… 问题并发稍微多的情况下Redis偶尔返回超时StackExchange的Redis类库用的较多但偶尔报的问题非常让人迷惑访问超时队列XXX…问题出在Redis服务器吗可是其他应用访问都正常啊难道要把这个类库替换掉问题描述如下Timeout performing GET keyName, inst: 1, mgr: ExecuteSelect, err: never, queue: 20, qu: 20, qs: 0, qc: 0, wr: 0, wq: 0, in: 0, ar: 0,
clientName: computerName, IOCP: (Busy0,Free1000,Min4,Max1000), WORKER: (Busy4,Free32763,Min4,Max32767),
Local-CPU: unavailable (Please take a look at this article for some common client-side issues that can cause timeouts:
https://github.com/StackExchange/StackExchange.Redis/tree/master/Docs/Timeouts.md)
给出了参考网址?StackExchange给出了这个问题的解释和一般方案那难道真的是我的工作线程比较多吗我抱着试试看的态度自己写了个测试用例code StatusCode.OK;
// ThreadPool.SetMinThreads(200, 200);var ts new ListTask();for (int i 0; i 100; i){var a i;var t new Task(() {var l this.Context.TryGetLock(123);Trace.WriteLine(${a}:{l! null});int workerThreads, completionPortThreads;ThreadPool.GetAvailableThreads(out workerThreads, out completionPortThreads);Trace.WriteLine($Available: WorkerThreads: {workerThreads}, CompletionPortThreads: {completionPortThreads});});t.Start();ts.Add(t);}Task.WaitAll(ts.ToArray());return null;
问题复现了就是提示类似错误把注释ThreadPool.SetMinThreads(200, 200);开启问题消除。结论问题的解决在于启用task后task入队后导致redis客户端超时客户端。。。因此解决的重点在于设置线程池的最小大小ThreadPool.SetMinThreads(200, 200);小备注之前改过连接超时稍微改大点也可以缓解该问题但仅此而已。StringBuilder sb new StringBuilder();sb.AppendFormat({0}:{1}, cfg.Server, cfg.Port);sb.AppendFormat(,allowAdmin{0}, cfg.AllowAdmin);sb.AppendFormat(,abortConnectfalse,connectRetry3,syncTimeout2500);sb.AppendFormat(,connectTimeout{0}, cfg.ConnectTimeout0?cfg.ConnectTimeout:5000);if (cfg.Ssl){// sb.AppendFormat(,ssl{0},password{1}, cfg.Ssl,cfg.Pwd);sb.AppendFormat(,password{1}, cfg.Ssl, cfg.Pwd);}syncTimeout :超时会影响redis取值的超时但是开多个task时超时设置非常大也解决不了。