首页 > 数据库 >【Azure Webjob + Redis】WebJob一直链接Azure Redis一直报错 Timeout Exception

【Azure Webjob + Redis】WebJob一直链接Azure Redis一直报错 Timeout Exception

时间:2024-02-18 20:22:05浏览次数:27  
标签:Busy Webjob Min Redis 报错 Timeout Azure

问题描述

运行在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) ... ... ) 。

 

 

参考资料

创建连续 Web 作业 : https://docs.azure.cn/zh-cn/app-service/webjobs-create#CreateContinuous

客户端故障排除 : https://docs.azure.cn/zh-cn/azure-cache-for-redis/cache-troubleshoot-timeouts#traffic-burst-and-thread-pool-configuration

 

 [END] 

 

 

标签:Busy,Webjob,Min,Redis,报错,Timeout,Azure
From: https://www.cnblogs.com/lulight/p/18019840

相关文章

  • 如何处理前端异常报错?
    异常分类页面js报错ajax请求异常页面资源加载异常(如:加载某个图片资源失败)promise异常iframe加载异常页面崩溃和卡顿异常常见的trycatch不能捕获异步的错误。比如这个setTimeout内部的错误捕获不到try{setTimeout(()=>{logErrorInfo();//上报......
  • redis高频问题--缓存击穿
    缓存击穿互斥锁==分布式锁互斥锁多用于关于钱的业务,保持强一致性性能差一些,因为需要互相等待逻辑过期保证高可用性,注重于用户的体验......
  • redis高频问题
    缓存穿透如果有人知道了你的接口请求地址,用不存在的id或者负数疯狂请求,会导致数据库宕机。所以需要预防布隆过滤器......
  • 用python脚本自动发送钉钉消息出现服务器异常的报错: HTTPSConnectionPool(host='oapi.
    一、问题描述执行python脚本发送钉钉消息,出现报错:HTTPSConnectionPool(host='oapi.dingtalk.com',port=443):Maxretriesexceededwithurl:/robot/send?access_token=43df999582e899dc6815c9d6346c9d253060259625c92e4f166e25ea58e5bdb5&timestamp=1708242748918&sign......
  • vue报错: error:0308010C:digital envelope routines::unsupported
    问题解决参考:https://blog.csdn.net/m0_65933139/article/details/130690790问题描述:报错:Error:error:0308010C:digitalenveloperoutines::unsupported报错原因:因为node.jsV17版本中最近发布的OpenSSL3.0,而OpenSSL3.0对允许算法和密钥大小增加了严格的......
  • 分布式缓存应用:Memcache 或 Redis
    为什么要使用分布式缓存高并发环境下,例如典型的淘宝双11秒杀,几分钟内上亿的用户涌入淘宝,这个时候如果访问不加拦截,让大量的读写请求涌向数据库,由于磁盘的处理速度与内存显然不在一个量级,服务器马上就要宕机。缓存可以将经常读取的数据存储在快速的内存中,从而避免了频繁访问慢速......
  • MAC DOCKER Zookeeper 启动报错 mkdir /host_mnt/private/var/db/timezone/tz: operat
    在Mac电脑上启动Zookeeper和kafka的docker容器时报错一开始我的语句是这样的dockerpullwurstmeister/zookeeperdockerrun-d--restart=always--log-driverjson-file--log-optmax-size=100m--log-optmax-file=2--namezookeeper-p2181:2181-v/etc/localtime:/et......
  • Redis生成无规律不重复的纯数字券码
    需求描述在开发优惠券系统或票务系统的时候,经常要生成纯数字码,券码要求:12位纯数字,无规律,不重复。下面我提供一种思路,利用redis的List数据类型,Lpop+Rpush维护一个1万个码的队列队列数据结构保持1万个券码数量,可以根据项目实际情况自行调整Array([0]=>478439938353[1]=>......
  • .NET 8 中 使用 IFormFile 上传大文件报错解决方案
    前言:项目中使用IFormFile写了一个上传文件的api,测试小文件时正常,当上传大文件(几十兆)时如下报错:使用默认的http启动,如下提示使用IIS启动,如下报错Error:RequestEntityTooLarge原因:.NET官方出于安全考虑,对body的大小做了限制,超出了限制就会form转化失败,导致我们Reuest.......
  • Redis使用Lua脚本
    Redis使用Lua脚本Redis使用lua脚本的优点减少网络开销:将原来多次请求的逻辑封装为脚本在服务器上执行,只需1次请求就能完成,减少了网络往返时延;原子操作:Redis会将整个脚本作为一个整体执行,中间不会被其他命令插入;复用性:客户端发送的脚本会永久保存在Redis中,其他客户端可以复用......