最近在做的一个项目,用的.net core 2.1,然后缓存用的Redis,缓存相关封装是同事写的,用的驱动是StackExchange.Redis version 2.0.571 ,一直听说这个驱动并发情况下有TimeOut bug,项目开发差不多后,我压测了一下,简单的模拟30个用户持续访问某一个有用到缓存的查询接口,结果这么小的压力下超时异常出现:

Timeout performing GET my_141 (5000ms), inst: 30, qu: 0, qs: 20, in: 20320, serverEndpoint: 172.16.3.119:6379, mgr: 10 of 10 available, clientName: s-119, IOCP: (Busy=0,Free=1000,Min=1,Max=1000), WORKER: (Busy=120,Free=32747,Min=1,Max=32767), v: 2.0.571.20511(Please take a look at this article for some common client-side issues that can cause timeouts: https://stackexchange.github.io/StackExchange.Redis/Timeouts))

后面是堆栈信息.....

蛋疼了很久,搜了很多文章,得到以下

解决方案

1、换掉,不用这个驱动( 可以看看.net core redis 驱动推荐,为什么不使用 StackExchange.Redis

2、redis操作修改为全部异步&& ThreadPool.SetMinThreads(200, 200);

我用的第二种解决了问题,主要换驱动也可能遇到坑;还有时间成本问题;

原因简析

我们看到以上的异常信息当中有这么一段:

IOCP: (Busy=0,Free=1000,Min=1,Max=1000),

WORKER: (Busy=120,Free=32747,Min=1,Max=32767),

意思是当前繁忙的WORKER 线程有120个,而系统“要由线程池根据需要创建的新的最小工作程序线程数。”,也就是系统创建的工作线程数不足以满足redis的Get操作的繁忙线程的需求,导致部分Get操作的线程堵塞超时了;

所以我们把“最小线程workerThreads” 修改为200解决问题;

最新文章

  1. yii模块下面的组件
  2. Windows下安装 使用coreseek
  3. [leetcode]Find Minimum in Rotated Sorted Array @ Python
  4. CMD方式修改MySQL的root用户密码
  5. Linux securecrt破解
  6. Java was started but returned exit code=13 C:\ProgramData\Oracle\Java\javapath\javaw.exe
  7. C#中out和ref使用
  8. Object传入String类型和其他
  9. Aho_Corasick自动机(AC自动机)
  10. JQuery的父、子、兄弟节点查找,节点的子节点循环
  11. django中间件templates写法
  12. C# 语言规范_版本5.0 (第12章 数组)
  13. 关于wooyun-2015-096990的总结
  14. Adobe Premiere Pro CS6 下载安装包成功
  15. html5之上的图片处理
  16. 20172328《程序设计与数据结构》实验四 Android程序设计报告
  17. extends 与implements的区别和用法
  18. P3649 [APIO2014]回文串
  19. httpd 2.4连接php-fpm
  20. docker命令相关

热门文章

  1. SkyWalking分布式链路追踪和监控-项目实战
  2. 分享windows 10 下部署 elasticsearch 和 logstash (二)
  3. 【maven】搭建maven私服--基于CentOS7.6+docker
  4. AES加解密异常java.security.InvalidKeyException: Illegal key size
  5. Java获取客户端真实IP地址
  6. Delphi CreateProcess
  7. Android Studio 3.5+ 使用androidx的recyclerView
  8. spring boot的异常处理
  9. The listener supports no services oracle注册监听
  10. 变量、数据类型、python内存管理