20191227 Redis监控和性能指标

1、Redis性能指标;

2、Redis配置文件;

 

通过Redis-cli命令行界面访问到Redis服务器,然后使用info命令获取所有与Redis服务相关的信息

比较重要的2部分性能指标memory和stats

可以指定info命令的参数来获取单个分类下的数据。比如输入info memory命令,会只返回与内存相关的数据。

1、内存使用率used_memory

used_memory是Redis使用的内存总量,它包含了实际缓存占用的内存和Redis自身运行所占用的内存(如元数据、lua)。

used_memory 字段数据表示的是:由Redis分配器分配的内存总量,以字节(byte)为单位。

used_memory_human上的数据和used_memory是一样的值,它以M为单位显示,仅为了方便阅读。

 

2、命令处理数total_commands_processed

在info信息里的total_commands_processed字段显示了Redis服务处理命令的总数,其命令都是从一个或多个Redis客户端请求过来的。

 

3、内存碎片率mem_fragmentation_ratio

info信息中的mem_fragmentation_ratio给出了内存碎片率的数据指标,它是由操系统分配的内存除以Redis分配的内存得出。

跟踪内存碎片率对理解Redis实例的资源性能是非常重要的。内存碎片率稍大于1是合理的,这个值表示内存碎片率比较低,也说明redis没有发生内存交换。但如果内存碎片率超过1.5,那就说明Redis消耗了实际需要物理内存的150%,其中50%是内存碎片率。若是内存碎片率低于1的话,说明Redis内存分配超出了物理内存,操作系统正在进行内存交换。

 

4、回收key数量

info信息中的evicted_keys/ɪˈvɪktɪd/字段显示的是,因为maxmemory限制导致key被回收删除的数量。

回收key的情况只会发生在设置maxmemory值后,不设置会发生内存交换。 当Redis由于内存压力需要回收一个key时,Redis首先考虑的不是回收最旧的数据,而是在最近最少使用的key或即将过期的key中随机选择一个key,从数据集中删除。

 

软件包管理器。

基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。

yum install redis (是否安装过此软件?) Package redis-5.0.7-1.el7.remi.x86_64 already installed and latest version

如果找不到命令,说明对应的软件没有安装,去安装软件即可。

 

 

在linux上启动redis-stat:./redis-stat

redis是否开启了AOF,0表示未开启,1表示开启;

配置文件一般在etc目录下,比如redis.conf,mysql.conf;

按 ESC :wq 保存并退出

在哪个目录下执行安装命令,当前软件就安装到那里。

 

service redis start # 启动redis;

service redis stop # 停止redis;

service redis status # 查看redis运行状态;

ps -ef | grep redis # 查看redis进程;

redis-cli # 进入本机redis;

keys * # 列出所有key;

ps aux | grep redis 这个命令对我帮助很大

# 将redis-cli拷贝到/usr/local/bin/下,让redis-cli指令可以在任意目录下直接使用;

sudo cp src/redis-cli /usr/local/bin/;

 

 

Redis性能监控之Redis-Stat

Redis-Stat是一个比较有名的redis指标可视化的监控工具,采用ruby开发,基于redis的info命令来统计,不影响redis性能。

鼠标放上去会显示完整的列名。

监听某个指定实例还是监听所有实例

redis性能监控工具;用 redis-stat 进行redis的性能数据收集;

Redis-Stat数据展示工具:控制台使用,web页面使用;

如何配置在web页面上展示(比较方便)? 对外映射端口即可。

linux上如何启动redis-stat? ./redis-stat

当前进程没有绑定到网卡上。

直接映射端口出去:浏览器能够访问;http://192.168.140.88:7006/

窗口关闭后台启动:使用nohup处理;

./redis-stat 192.168.140.88:6379 --server=7006 1 --daemon

./redis-stat 127.0.0.1:6379 --server=7006 1 --daemon

当前进程是否绑定到了网卡之上。

nohup ./redis-stat 127.0.0.1:6379 --server=7006 1 &

每隔1秒打印一次信息

service redis status

Linux netstat命令用于显示网络状态。利用netstat指令可让你得知整个Linux系统的网络情况。

netstat -tnpl

三大核心指标:每秒执行命令数,cpu使用率,内存使用率;

 

time: 更新参数时间

US: Redis 服务器使用的用户 CPU

SY: Redis 服务器使用的系统 CPU

CL: connected_clients:客户端连接数(不包括从站的连接数)

cmd/s: total_commands_processed_per_ses 服务器已每秒执行的命令数量

exp/s: expired_keys_per_second 因为过期而每秒被自动删除的数据库键数量

11evt/s: evicted_keys_per_second 因为最大内存容量限制而每秒被驱逐(evict)的键数量

hit%/s: keyspace_hits_ratio _per_second 查找数据库键成功的次数比例

hit/s: keyspace_hits  _per_second  查找数据库键成功的次数

mis/s: keyspace_misses _per_second 查找数据库键每秒失败的次数

aofcs: aof_current_size  AOF文件目前的大小

redis-cli 直接敲这个命令即可。

 

1慢日志:

1.1、通过命令[slowlog get]得到 Redis 执行的 slowlog 集合,理想情况下slowlog 集合应该为空即没有任何慢日志。

1.2、若发现有慢命令,则应该逐个分析是否正常,是否需要优化。

   

2存活情况:是最重要的健康指标,通过命令 PING 的响应是否为 PONG 来判断。

 

3连接数:connected_clients    

3.1、连接的客户端数量,radis-stat 监控工具或命令 [redis-cli info Clients|grep connected_clients] 得到,这个值与使用Redis服务的连接池配置关系比较大,这个值如果很大,需要排查问题原因。

3.2、另外还有一个拒绝连接数(rejected_connections)也需要关注,这个值理想状态是0 。如果大于0,说明创建的连接数大于 maxclients,需要排查原因。是 Redis 连接池配合不合理还是连接这个Redis 的服务过多。

 

4 阻塞客户端数量:blocked_clients 

4.1 blocked_clients 通常是执行了 list 数据类型的 BLPOP 或者 BRPOP 命令引起的,可以通过[redis-cli info Clients|grep blocked_clients]得到,这个值最应该=0。

 

5 使用内存峰值

5.1 监控 Redis 内存使用峰值,可以通过命令[config set maxmemory]设置允许使用的最大内存。

5.2 为了防止发生swap导致Redis性能骤减,甚至由于使用内存超标导致系统kill,建议used_memory_peak(占用内存的峰值)的值与maxmemory 的值有个安全区间,例如1G。

5.3 可用radis-stat查看used_memory图像化曲线找到占用内存的峰值。

 

6 内存碎片率:used_memory_rss/use_memory 这两个值可用radis-stat监控

6.1 mem_fragmentation_ratio = used_memory_rss/use_memory 当值大于1时,表示分配的内存超过实际使用的内存,数值越大[利用率不高],碎片率越严重。当这个值小于1时,表示发生了 swap(Swap分区在系统的物理内存不够用的时候,把物理内存中的一部分空间释放出来,以供当前运行的程序使用) ,既可用内存不足。

6.2 Redis4.0 有一个主要的特性就是优化内存碎片率问题(Memory de-fragmentation)。在redis.conf 配置文件中[ACTIVE DEFRAGMENTATION:碎片整理允许Redis压缩内存空间,从而回收内存。此特性默认是关闭的,可以通过命令CONFIG SET activedefrag yes 热启动这个特性]。

6.3 当内存使用量(use_memory)很小的时候,这个值参考价值不大。所以建议used_memory至少1G以上才考虑对内存碎片率进行监控。

 

7缓存命中率:keyspace_misses + keyspace_hits  

7.1 keyspace_misses/keyspace_hits 这两个指标用来统计缓存的命中率,keyspace_misses值未命中次数,keyspace_hits 表示命中次数。keyspace_hits/(keyspace_misses+keyspace_hits) 就是缓存命中率。

7.2 如果缓存命中率过低,那么要排查对缓存的用法是否有问题。

 

8 OPS:instantaneous_pos_per_sec 表示缓存的OPS(operation per second 每秒操作次数)

 

9 持久化:

9.1 rdb_last_bgsave_status/aof_last_bgrewrite_status,即最近一次或者最后一次 RDB/AOF 持久化是否有问题,这两个值都应该时 “OK”。

由于 Redis 持久化时会 fork 子进程,且 fork 是一个完全阻塞的过程,所以可以监控 fork    耗时即:latest_fork_usec,单位是微妙,如果这个值比较大会影响业务,甚至出现 timeout 。

9.2失效KEY:如果把 Redis 当缓存使用,那么建议所有的key都设置expire属性,通过命令redis-cli info Keyspace 得到每个 db 中 key 的数量和设置了 expire属性的 key 的属性,且 expires(表示设置了超时时间的key个数) 需要 等于 keys。

 

Redis对用户信息怎么处理的,登录成功后如何保存本地信息,Redis缓存哪些信息?

Redis计数器:Redis Incr命令将key中储存的数字值增一。如果key不存在,那么key的值会先被初始化为0,然后再执行INCR操作。一般通常用来当做计数器来用。

Redis的单点安装,以及开始两种持久化操作;

Redis如何部署集群,设置各个节点之间的关系,如何建立主从模式?

使用redis做限流功能?

Redis的性能监控工具以及Redis的性能,最新版redis客户端只能看到粗略的情况?

 

如何封装本地缓存框架?

Cache类似于Map,它是存储键值对的集合。

//设置cache的初始大小为10,要合理设置该值

//设置并发数为5,即同一时间最多只能有5个线程往cache执行写入操作

内存使用率是Redis服务最关键的一部分。如果一个Redis实例的内存使用率超过可用最大内存 (used_memory >可用最大内存)

如果存储的是对象,需要把对象转化成String存储,所以使用了序列化工具。

getIfPresent(String key)

通过key获取缓存中的value,若不存在直接返回null。

 

Redis 一定会牵涉到序列化与反序列化的问题。

如何读取配置文件CacheConfig

创建一个统一的操作redis Client的工具类

Redis中涉及的异常处理?当前框架哪些操作redis不支持?

如何设置缓存的定时刷新?Cache

Redis 连接池的常用配置以及使用,关闭连接资源

Redis Cluster客户端命令

 

参考:

https://www.cnblogs.com/shamo89/p/8384921.html

https://www.cnblogs.com/gossip/p/5993922.html

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Redis 是一种高性能的 NoSQL 数据库,为了确保 Redis 的稳定运行,我们需要监控一些关键指标。 1. 内存使用率:Redis 将所有数据存储在内存中,因此内存使用率是一个重要的指标。我们需要监控 Redis 的内存使用情况,确保不会出现内存溢出的情况。 2. 响应时间:监控 Redis 的响应时间可以帮助我们评估系统性能。通过监控平均响应时间和最大响应时间,我们可以及时发现和解决潜在的性能问题。 3. 连接数:Redis 具有高并发的特点,因此连接数是一个关键指标。通过监控 Redis 的连接数,我们可以确保系统在高负载下能够保持稳定的性能。 4. 慢查询:Redis 中的慢查询可能会导致系统性能下降。通过监控慢查询,我们可以及时发现问题,并对查询进行优化以提高系统性能。 5. 主从同步延迟:Redis 支持主从复制,因此监控主从同步延迟是非常重要的。如果同步延迟过高,可能会导致数据不一致的问题。 6. 键命中率:Redis 通过缓存在内存中提高数据访问速度,因此监控键命中率可以帮助我们评估系统的缓存效果。如果键命中率较低,可能需要重新考虑缓存策略。 7. 错误日志:监控 Redis 的错误日志可以帮助我们及时发现和解决系统问题。通过分析错误日志,我们可以找出导致故障的原因并进行修复。 通过监控这些关键指标,我们可以及时发现和解决 Redis 系统中的问题,确保系统的稳定性和性能。 ### 回答2: Redis是一种开源的、高性能的、非关系型的内存键值数据库,用于缓存、持久化和消息代理等任务。在进行Redis监控时,重点关注以下几个指标: 1. 内存使用情况:Redis采用内存数据库的方式存储数据,因此内存使用情况是一个重要的指标。通过监控Redis的内存使用量,可以预测是否存在内存不足的情况,并及时采取措施,如扩容服务器或优化数据结构。 2. QPS(每秒查询数):QPS是指Redis每秒处理的查询请求数量。监控QPS可以帮助了解当前系统的请求负载情况,是否达到了系统的性能瓶颈。在高峰期,如果QPS过高,可能导致Redis性能下降,需要进行优化。 3. 响应时间:响应时间是指Redis处理一个查询请求所需要的时间。通过监控响应时间,可以了解系统的性能状况,及时发现潜在的性能问题。 4. 连接数:连接数是指当前与Redis服务器建立的连接数量。监控连接数可以了解系统的负载情况,及时发现连接数异常增长的问题,并及时处理。 5. 命中率:命中率是指Redis缓存命中的次数与查询总次数的比值。监控命中率可以评估缓存的效果,及时发现缓存命中率降低的原因,并进行相应的优化。 6. 客户端数量:监控客户端数量可以了解当前Redis的工作负载情况,及时调整系统资源。 在监控Redis关键指标时,可以使用相关的监控工具,如Redis的官方监控工具Redis Monitor、Redis实例管理工具Redis Sentinel等,或借助第三方监控工具进行监控和报警。 ### 回答3: Redis是一款开源的内存数据库,被广泛应用于处理大量的数据读写和高并发的场景。对于Redis监控,常用的关键指标包括以下几个方面: 1. 内存使用情况:Redis是基于内存的数据库,在运行过程中需要使用大量的内存来存储数据。因此,监控内存使用情况是非常重要的指标,可以通过查看Redis的INFO命令或者监控工具来获取。 2. 连接数:Redis支持多个客户端同时连接到同一个服务器,因此监控连接数可以帮助我们了解当前系统的并发连接情况,以及是否存在连接过多导致系统性能下降的问题。 3. CPU使用情况:虽然Redis主要是基于内存的数据库,但在一些情况下,Redis的CPU使用率也是一个重要的指标。特别是在进行大量计算、持久化、复制等操作时,CPU的使用情况会对性能产生较大影响。 4. 响应时间:作为一个高性能的数据库,Redis的响应时间是我们关注的重要指标之一。通过监控请求的平均响应时间、最大响应时间等指标,可以及时发现系统性能下降的问题,并进行相应的优化。 5. 键命中率:Redis支持将部分数据缓存在内存中,通过键命中率的监控,我们可以了解系统对数据的存储和检索效率。较高的键命中率意味着Redis可以高效地处理请求,较低的命中率可能会影响系统性能。 综上所述,以上是Redis监控中的一些关键指标。通过对这些指标的监控和分析,可以帮助我们及时发现系统性能问题,并进行相应的优化和调整。同时,可以通过监控工具来实时监控和报警,提高Redis系统的稳定性和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值