【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的时候,从使用者的角度,需要知道有那些步骤? 注意事项? 潜在影响?停机事件窗口? 升级预估时间? 解决方案 从 ...
随机推荐
- Find -mtime 的图解
- clickhouse 优化实践,万级别QPS数据毫秒写入和亿级别数据秒级返回 | 京东云技术团队
1.背景 魔笛活动平台目前在采集每个活动的用户行为数据并进行查询,解决线上问题定位慢,响应不及时的问题,提升客诉的解决效率.目前每天采集的数据量5000万+,一个月的数据总量15亿+,总数据量40亿+ ...
- 【计数,DP】ABC306Ex Balance Scale
Problem Link 现在有 \(n\) 个球,每个球有一个重量,重量未知.接下来会进行 \(m\) 次称重,每次给定 \(a_i\) 和 \(b_i\),比较这两个球的重量,结果可能是 \(&g ...
- 【解决了一个小问题】vm-agent中,如何对envoy这样的特殊expoter路径做处理?
作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 envoy这个组件的expoter路径为 /stats/p ...
- 8.5 CheckRemoteDebuggerPresent
CheckRemoteDebuggerPresent 也是一个微软提供的反调试函数,该函数可以在本地或者远程进程中使用.函数接收两个参数进程句柄和一个指向布尔值的指针.如果指定的进程正在被调试,则函数 ...
- Linux-mysql的备份与恢复
数据库 备份 mysqldump(mysql自带备份功能) - 锁表 - 备份特别慢,适用于数据量较小 - 不可以做增量备份 - 单线程 ``` -A, --all-databases 所有的库 -B ...
- 练习(Java):将一个数转换为16进制;获得多位数的各个位上的数
//将一个数转换为十六进制 int num = 60; int i1 = num % 16; int i2 = num % (16*16) / 16; int i3 = num % (16*16*16 ...
- 浅谈一下对于 js 中的 this 的理解
浅谈一下对于 js 中的 this 的理解 对于 this 值的定义: 简单来说 this 是一个对象,这个对象具体的值是什么,取决于运行时的环境,即代码执行时的环境. MDN: 当前执行上下文( g ...
- 实现阿里云模型服务灵积 DashScope 的 Semantic Kernel Connector
Semantic Kernel 内置的 IChatCompletionService 实现只支持 OpenAI 与 Azure OpenAI,而我却打算结合 DashScope(阿里云模型服务灵积) ...
- SP9494 ZSUM - Just Add It 题解
题目传送门 前置知识 快速幂 解法 推式子: \(\begin{aligned} Z_n+Z_{n-1}-2Z_{n-2}&=(Z_n-Z_{n-2})+(Z_{n-1}-Z_{n-2}) \ ...