【Azure Webjob + Redis】WebJob一直链接Azure Redis一直报错 Timeout Exception
问题描述
运行在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的更多相关文章
- Redis生产环境节点宕机问题报错及恢复排错
Redis故障发现 主观下线 当cluster-node-timeout时间内某节点无法与另一个节点顺利完成ping消息通信时,则将该节点标记为主观下线状态. 客观下线 当某个节点判断另一个节点主观下 ...
- mysql链接服务器,update报错
select * from Openquery(MySQL, 'SELECT * FROM official.sys_hospital') 执行更新语句: ; 报错,错误信息: 链接服务器" ...
- 链接Caffe,程序报错应用程序无法正常启动(0xc000007b)
目录 背景 Debug 解决办法 原因(猜想) 总结 重点是介绍了一种排查这个问题的方法. 背景 Windows 下, Caffe 单独编译成库并且安装在路径 Caffe_DIR, 动态链接库 Caf ...
- laravel用redis保存session遇到的坑,没报错,但redis-cli就是查不到
laravel用redis保存session遇到的坑, 配置redis存储session流程是这样的 在.evn文件中把session驱动和连接改为了redis的 如下: SESSION_DRIVER ...
- Redis学习之路(004)- 报错及问题
在i配置编译的过程中,遇到一下问题: 1. /redis_test: error while loading shared libraries: libhiredis.so.0.13: cannot ...
- window安装reidis完成之后,想要把数据存入redis,必须开扩展,不然报错,redis windows phpstudy 安装扩展
redis windows phpstudy 安装扩展 1.http://windows.php.net/downloads/pecl/releases/redis/3.1.5rc1/ 2.htt ...
- redis哨兵模式启动redis-sentinel sentinel.conf 报错
[root@node01 redis-3.2.8]# redis-sentinel sentinel.conf *** FATAL CONFIG FILE ERROR ***Reading the c ...
- 使用datagrip链接mysql数据库的报错问题.
1. datagrip刚打开时候,选择风格是白是黑后, 会有一个选择什么数据库,有oracle...一大堆,别选错了.我的是mysql,不要选成了windows sql 和sql. 2 基本设置写完, ...
- windows 链接 MySQL8.0.28 报错: SSL connection error: unknown error number 解决办法
找到 My.ini文件,以管理员身份打开并在 [mysqld] 节点下 增加 skip_ssl 选项并保存,重启 MySQL 服务 执行SQL语句 SHOW VARIABLES L ...
- linux详细redis安装和php中redis扩展
第一部分:安装redis 希望将redis安装到此目录 1 /usr/local/redis 希望将安装包下载到此目录 1 /usr/local/src 那么安装过程指令如下: 1 2 3 4 5 6 ...
随机推荐
- rpm包方式安装oracle21c
下载相关依赖包 https://yum.oracle.com/repo/OracleLinux/OL8/appstream/x86_64/index.htmlhttps://www.oracle.co ...
- 我在京东做研发 | 京东云算法科学家解析爆火的ChatGPT
令人惊艳的ChatGPT横空出世 背后有怎样的前沿技术支撑 走向大规模产品应用又有何局限 深耕对话式AI技术十余年 京东云算法科学家将带您一同走进技术世界 解析ChatGPT的技术亮点与局限 分享下一 ...
- Unity SetActive Event
网上查了一下Unity的SetActive变化事件没有找到,我想到用另一种思路来实现这个事件通知,它可用来调试是何处把某个gameobject隐藏掉了 Unity提供了这两个函数,OnEnable,O ...
- Couldn't launch Python exit code 9009
Couldn't launch Python exit code 9009 start stable-diffusion-webui,发现,python 环境没有,我本地其实是已经安装完毕的,后来发现 ...
- python快速入门【四】-----各类函数创建
python入门合集: python快速入门[一]-----基础语法 python快速入门[二]----常见的数据结构 python快速入门[三]-----For 循环.While 循环 python ...
- python入门之后须掌握的知识点(excel文件处理+邮件发送+实战:批量化发工资条)【二】
相关文章: python处理Excel实现自动化办公教学(含实战)[一] python处理Excel实现自动化办公教学(含实战)[二] python处理Excel实现自动化办公教学(数据筛选.公式操作 ...
- .NET Core开发实战(第5课:依赖注入:良好架构的起点)--学习笔记(下)
05 | 依赖注入:良好架构的起点 注册完毕之后,想替换某些组件的某些部分时,可以使用 Replace 和 RemoveAll services.AddSingleton<IOrderServi ...
- 下载Apache软件基金的软件和项目(Hadoop相关组件)
一.下载Hadoop相关组件,可以到Apache软件基金的资源目录: Apache 分发目录地址:https://dlcdn.apache.org/ 二.下载软件 方法一:在页面中找到需要下载的软件目 ...
- JS leetcode 存在重复元素 II 题解分析,记一次震惊的负向优化
壹 ❀ 引 整理下今天做的算法题,题目难度不高,但在优化角度也是费了一些功夫.题目来自219. 存在重复元素 II,问题描述如下: 给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i ...
- NC14352 旅行
题目链接 题目 题目描述 小z放假了,准备到R城市旅行,其中这个城市有N个旅游景点.小z时间有限,只能在三个旅行景点进行游玩.小明租了辆车,司机很善良,说咱不计路程,只要你一次性缴费足够,我就带你走遍 ...