问题描述

运行在App Service上的Webjob连接Azure Redis出现Timeout Exception。

错误截图:

参考Azure Redis对于超时问题的排查建议, 在修改Min Thread后,问题依旧。

流量突增和线程池配置

流量激增时,如果 ThreadPool  设置不佳,则可能导致对 Redis 服务器已发送但尚未在客户端上使用的数据的处理出现延迟。

System.TimeoutException: Timeout performing EVAL, inst: 8, mgr: Inactive, queue: 0, qu: 0, qs: 0, qc: 0, wr: 0, wq: 0, in: 64221, ar: 0,    
IOCP: (Busy=6,Free=999,Min=2,Max=1000), WORKER: (Busy=7,Free=8184,Min=2,Max=8191)

在上面的异常中,有几个需要注意的问题:

  • 请注意,在 IOCP 部分和 WORKER 部分,Busy 值大于 Min 值。 这种差异意味着 ThreadPool 设置需要调整。
  • 也可参看 in: 64221。 此值表示客户端的内核套接字层收到了 64,221 字节,但应用程序尚未读取这些字节。 这种差异通常意味着,应用程序(例如 StackExchange.Redis)从网络读取数据的速度没有服务器向你发送数据的速度快。

可以配置 ThreadPool 设置,确保线程池在流量激增的情况下快速扩展。

那么,这个情况如何来缓解呢?

问题分析

在增加 ThreadPool 配置后,问题并没有得到缓解。查看Redis服务端的运行状态,一切正常。在排除代码服务端后,接下来就重点查看客户端状态。

查看App Service (Webjob) 的主体,它多个实例的CPU都有升高的情况,怀疑是当Webjob在某一个实例上运行的时候,消耗的CPU资源太高。因为Webjob的负载太高,一个实例的线程资源不够充足,所以需要多实例来处理。但是部署Webjob的时候,默认是单实例运行。

所以在部署的时候,需要手动设置为Multi Instance。

当修改WebJob的多实例,App Service上的Webjob不在报Redis Timeout Exception ( ... ... IOCP: (Busy=1,Free=999,Min=200,Max=1000), WORKDER: (Busy=576,Free=1471,Min=200,Max=2047) ... ... ) 。问题得到缓解!

 

参考资料

 

【Azure Webjob + Redis】WebJob一直链接Azure Redis一直报错 Timeout Exception的更多相关文章

  1. Redis生产环境节点宕机问题报错及恢复排错

    Redis故障发现 主观下线 当cluster-node-timeout时间内某节点无法与另一个节点顺利完成ping消息通信时,则将该节点标记为主观下线状态. 客观下线 当某个节点判断另一个节点主观下 ...

  2. mysql链接服务器,update报错

    select * from Openquery(MySQL, 'SELECT * FROM official.sys_hospital') 执行更新语句: ; 报错,错误信息: 链接服务器" ...

  3. 链接Caffe,程序报错应用程序无法正常启动(0xc000007b)

    目录 背景 Debug 解决办法 原因(猜想) 总结 重点是介绍了一种排查这个问题的方法. 背景 Windows 下, Caffe 单独编译成库并且安装在路径 Caffe_DIR, 动态链接库 Caf ...

  4. laravel用redis保存session遇到的坑,没报错,但redis-cli就是查不到

    laravel用redis保存session遇到的坑, 配置redis存储session流程是这样的 在.evn文件中把session驱动和连接改为了redis的 如下: SESSION_DRIVER ...

  5. Redis学习之路(004)- 报错及问题

    在i配置编译的过程中,遇到一下问题: 1. /redis_test: error while loading shared libraries: libhiredis.so.0.13: cannot ...

  6. window安装reidis完成之后,想要把数据存入redis,必须开扩展,不然报错,redis windows phpstudy 安装扩展

    redis windows phpstudy 安装扩展   1.http://windows.php.net/downloads/pecl/releases/redis/3.1.5rc1/ 2.htt ...

  7. redis哨兵模式启动redis-sentinel sentinel.conf 报错

    [root@node01 redis-3.2.8]# redis-sentinel sentinel.conf *** FATAL CONFIG FILE ERROR ***Reading the c ...

  8. 使用datagrip链接mysql数据库的报错问题.

    1. datagrip刚打开时候,选择风格是白是黑后, 会有一个选择什么数据库,有oracle...一大堆,别选错了.我的是mysql,不要选成了windows sql 和sql. 2 基本设置写完, ...

  9. windows 链接 MySQL8.0.28 报错: SSL connection error: unknown error number 解决办法

    找到 My.ini文件,以管理员身份打开并在  [mysqld]   节点下 增加   skip_ssl   选项并保存,重启 MySQL 服务 执行SQL语句    SHOW VARIABLES L ...

  10. linux详细redis安装和php中redis扩展

    第一部分:安装redis 希望将redis安装到此目录 1 /usr/local/redis 希望将安装包下载到此目录 1 /usr/local/src 那么安装过程指令如下: 1 2 3 4 5 6 ...

随机推荐

  1. el-popover 点击取消按钮,弹窗仍然无法关闭

    <el-popover placement="bottom" width="200" :ref="aa" :visible.sync= ...

  2. Go实现网络代理

    使用 Go 语言开发网络代理服务可以通过以下步骤完成.这里,我们将使用 golang.org/x/net/proxy 包来创建一个简单的 SOCKS5 代理服务作为示例. 步骤 1. 安装 golan ...

  3. python读取json格式文件大量数据,以及python字典和列表嵌套用法详解

    1.Python读取JSON报错:JSONDecodeError:Extra data:line 2 column 1 错误原因: JSON数据中数据存在多行,在读取数据时,不能够单单用open(), ...

  4. 多智能体强化学习算法【二】【MADDPG、QMIX、MAPPO】

    相关文章: 常见多智能体强化学习仿真环境介绍[一]{推荐收藏,真的牛} 多智能体强化学习算法[一][MAPPO.MADDPG.QMIX] 多智能体强化学习算法[二][MADDPG.QMIX.MAPPO ...

  5. C/C++ 反汇编:针对加减乘除的还原

    算术运算通常是指,加减乘除四则运算,而计算机中的四则运算与数学中的有所不同,同样是实现算术运算,高级语言与汇编语言的实现思路完全不同,往往一个简单的减法运算,都要几条指令的配合才能得出计算结果,而为了 ...

  6. 【内存操作】C语言内存函数介绍以及部分模拟实现【初学者保姆级福利】超详细的解释和注释

    C语言 内存函数的使用以及部分模拟实现 求个赞求个赞求个赞求个赞 谢谢 先赞后看好习惯 打字不容易,这都是很用心做的,希望得到支持你 大家的点赞和支持对于我来说是一种非常重要的动力 看完之后别忘记关注 ...

  7. uni-app+vue3会遇到哪些问题

    已经用 uni-app+vue3+ts 开发了一段时间,记录一下日常遇见的问题和解决办法 uni-app 中的单端代码 uni-app 是支持多端,如果你想让你的代码,只在部分平台使用,那么就需要用的 ...

  8. 体验 ABP 的功能和服务

    大家好,我是张飞洪,感谢您的阅读,我会不定期和你分享学习心得,希望我的文章能成为你成长路上的垫脚石,让我们一起精进. ABP是一个全栈开发框架,它在企业解决方案的各个方面都有许多构建模块.在前面三章中 ...

  9. webrtc终极版(题外话)辛苦写文章分享,竟然遇到喷子狂喷,写篇文章回怼下,顺便发表下面对喷子的处理方式

    webrtc终极版(题外话)辛苦写文章分享,竟然遇到喷子狂喷,写篇文章回怼下,顺便发表下面对喷子的处理方式 第一篇文章发过后,出人意料的是,收到了博客园某一位用户的狂喷[注:本系列文章会同步发布到cs ...

  10. ASP.NET Core分布式项目实战(第三方ClientCredential模式调用)--学习笔记

    任务10:第三方ClientCredential模式调用 创建一个控制台程序 dotnet new console --name ThirdPartyDemo 添加 Nuget 包:IdentityM ...