【Azure Redis 缓存】Redis性能指标之Server Load
Server Load描述
在Redis的官方介绍中,Server Load指标是Redis 服务器忙于处理消息并且非空闲等待消息的周期百分比。 如果此计数器达到 100,则意味着 Redis 服务器已达到性能上限并且 CPU 无法更快地工作。 它受Memory, CPU, Connections, Operations(操作数), 网络写入/写出,需执行的指令等因素影响。
引起Service Load高的情况有
- Memory达到当前Redis级别使用上限,可以根据指标Memroy来查看。
- CPU限制:操作是否占用了服务器或客户端上的大量 CPU?是否存在需要在服务器上进行长时间处理的命令? 在 Redis 服务器上花费很长时间处理请求的命令可能会导致超时。运行 SLOWLOG 命令查看是否存在比预期速度更慢的请求 。
- 带宽限制:如果请求受服务器或客户端上的带宽限制的约束,则需要更长的时间才能完成,因此可能会导致超时。
- 连接数限制:每一次建立新的连接都是一次昂贵的操作,所以如果瞬间连接数升高且过多,都会引起Service Load升高。
Server Load高引发的后果
服务器负载或 CPU 使用率偏高意味着服务器无法及时处理请求。 服务器可能会减慢响应速度,且无法跟上请求速率。如果看到高 Redis 服务器负载,则会在客户端看到超时异常。
示例1:使用KEYS命令或者SCAN(扫描全库)而导致Server Load高,引起新的连接无法建立
由于KEYS命令是时间复杂度为O(N)的命令,Redis是单线程工作的,KEYS会阻塞其他命令的执行,所以不建议使用KEYS。一般情况下会使用SCAN,一次scan命令是时间复杂度为O(1)的,但是如果进行full scan的话,那时间复杂度和KEYS是一样的,为O(N)。所以也要避免做full scan。

(执行SCAN命令的耗时,耗时2.5秒,非常耗时)
根据文档Redis SCAN介绍(https://redis.io/commands/scan) 命令执行一次是会返回一些数据和一个光标值的,在下一次调用时指定该光标值,直到光标值返回为0。所以在调用SCAN时候需要谨慎使用。
参考资料
监视 Azure Cache for Redis: https://docs.microsoft.com/zh-cn/azure/azure-cache-for-redis/cache-how-to-monitor
排查 Azure Cache for Redis 服务器端问题: https://docs.azure.cn/zh-cn/azure-cache-for-redis/cache-troubleshoot-server#high-cpu-usage-or-server-load
Azure Redis 缓存的最佳做法: https://docs.azure.cn/zh-cn/azure-cache-for-redis/cache-best-practices
Redis SCAN:https://redis.io/commands/scan
集群中keys的分布是使用哈希算法处理的,如果客户指定了Keys相同的部分进行哈希操作,那这些key会被放到同一分片,具体可以参考:https://docs.azure.cn/zh-cn/azure-cache-for-redis/cache-how-to-premium-clustering#how-are-keys-distributed-in-a-cluster
【Azure Redis 缓存】Redis性能指标之Server Load的更多相关文章
- 第二百九十四节,Redis缓存-Redis安装
redis简介 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sor ...
- 【Azure Redis 缓存 Azure Cache For Redis】Redis性能问题,发现Server Load非常的高,导致正常连接/操作不成功
问题描述 在正常使用Azure Redis的服务中,突然发现Redis 的CPU达到了100%, 正常的使用中发现性能问题严重.从Redis的门户图表中,观察到CPU, Connection,Lent ...
- ThinkPHP5配置redis缓存
thinkphp采用cache类提供缓存功能支持,采用驱动方式,在使用缓存之前需要进行初始化操作.支持的缓存类型包括file.memcache.wincache.sqlite.redis和xcache ...
- thinkphp5的Redis缓存配置
thinkphp采用cache类提供缓存功能支持,采用驱动方式,在使用缓存之前需要进行初始化操作.支持的缓存类型包括file.memcache.wincache.sqlite.redis和xcache ...
- TP5中用redis缓存
在config.php配置文件下找到缓存设置,将原来的文件缓存修改为redis缓存,也可以改为多种类型的缓存: // +---------------------------------------- ...
- Azure Redis 缓存使用注意事项与排查问题文档整理
StackExchange.Redis 使用名为 synctimeout 的配置设置进行同步操作,该设置的默认值为 1000 毫秒. 如果同步调用未在规定时间内完成,StackExchange.Red ...
- Azure Redis 缓存的 ASP.NET 会话状态提供程序
Azure Redis Cache 提供了一个会话状态提供程序,你可以使用其在缓存中(而不是内存中或在 SQL Server 数据库中)存储会话状态.要使用缓存会话状态提供程序,先首先配置缓存,然后使 ...
- 【Azure Redis 缓存 Azure Cache For Redis】当使用Jedis客户端连接Redis时候,遇见JedisConnectionException: Could not get a resource from the pool / Redis connection lost
问题情形 当在执行Redis一直指令时,有可能会遇见如下几种错误: 1) redis.clients.jedis.exceptions.JedisConnectionException: Could ...
- 【Azure Redis 缓存 Azure Cache For Redis】使用Redis自带redis-benchmark.exe命令测试Azure Redis的性能
问题描述 关于Azure Redis的性能问题,在官方文档中,可以查看到不同层级Redis的最大连接数,每秒处理请求的性能. 基本缓存和标准缓存 C0 (250 MB) 缓存 - 最多支持 256 个 ...
- 【Azure Redis 缓存 Azure Cache For Redis】Azure Redis由低级别(C)升级到高级别(P)的步骤和注意事项, 及对用户现有应用的潜在影响,是否需要停机时间窗口,以及这个时间窗口需要多少的预估问题
问题描述 由于Azure Redis的性能在不同级别表现不同,当需要升级/缩放Redis的时候,从使用者的角度,需要知道有那些步骤? 注意事项? 潜在影响?停机事件窗口? 升级预估时间? 解决方案 从 ...
随机推荐
- C#中DataTable数据导出为HTML格式文件
/// <summary> /// DataTable导出为HTML的Table并保存到本地 /// </summary> /// <param name="d ...
- centos7安装protobuf|序列化和反序列化工具
前言 那么这里博主先安利一些干货满满的专栏了! 首先是博主的高质量博客的汇总,这个专栏里面的博客,都是博主最最用心写的一部分,干货满满,希望对大家有帮助. 高质量博客汇总https://blog.cs ...
- 小知识:Exadata平台去掉密码输错延迟10分钟登录
生产环境不评价,若是测试环境实在受不了偶尔一次因为密码输错就要等待10分钟才能登陆的限制. 那测试环境下,如何关闭这个限制呢?很简单: # vi /etc/pam.d/sshd --找到并注释掉下面这 ...
- Java 数字 默认是 Integer类型的问题,System.currentTimeMillis() + (180 * 24 * 60 * 60 * 1000)的问题,剖析、Long + Integer的问题
最终结论: (180 * 24 * 60 * 60) 这种计算表达式在 Java中是默认以 Integer类型来的,若不超过 Integer的最大值则没有问题,若超过则必须用 (180 * 24 * ...
- [Spring]Junit单元测试时取不到本地文件问题
Junit单元测试时取不到本地文件问题 问题 当使用Junit进行单元测试时,遇到了以下问题: 2022-10-24 16:13:19.902 [main] ERROR zonetop.gisboot ...
- ABC 312
前三题氵 D 给定一个由 (,?,) 组成的字符串.每个 ? 可以设定为任意括号.求有几种设定方法使得整个是合法括号序列. 套路,dp E 给定 \(n\) 个两两不相交的长方体,对每个长方体,求有多 ...
- 如何做好一个基础的搜索功能?记一个因客户大数据量而导致的后发先至Bug
壹 ❀ 引 上篇文章算是开了一个新系列,因为工作缘故,我基本每天都在跟各式各样的bug打交道.其实站在一个开发的角度,我想每个人应该都更喜欢创造新代码,创造新bug,而不是每天都泡在茫茫代码海洋中定位 ...
- NC50381 道路和航线
题目链接 题目 题目描述 FarmerJohn正在一个新的销售区域对他的牛奶销售方案进行调查.他想把牛奶送到T个城镇,编号为1到T.这些城镇之间通过R条道路(编号为1到R)和P条航线(编号为1到P)连 ...
- NAND Flash 寿命算法——Wear leveling
由于闪存的可擦写次数是有限的,当某些数据被频繁修改时容易导致对应的块很快被耗尽使用寿命,从而导致整块盘无法使用,所以需要有一种技术来将这些块的擦写均摊一下,延长使用寿命. 首先看几个相关的基本概念: ...
- STC89C52控制74HC595,74HC138双色16x16点阵屏循环显示汉字
简介 常见的LED点阵除了使用MAX7219, 还有一部分是使用74HC595, 前者能主动刷新, 后者需要上位机主动扫描刷新. 手里这块是德飞莱的16x16LED点阵模块, 板上印的型号LY-LED ...