关于redis使用CPU较高的总结

有监控

1、部署监控工具,统计各种操作的频率;
2、查看慢查询。

没监控,使用命令排查

  1. 使用info和monitor命令(这两个命令也可以登录之后使用,不过有可能造成client的crash,可以使用tail命令优化)
redis-cli -h 192.168.1.xx  -a 'xxx' info 
redis-cli -h 192.168.1.xx  -a 'xxx' monitor 

#info命令会显示当前的状态,monitor会显示当前的客户端的命令请求;
  1. 使用慢查询
redis-cli -h 192.168.1.xx  -a 'xxx' slowlog get (reset替换get清空旧的log)

#这个命令会显示出最近一段时间内的耗时较久的查询。

#慢日志参考
127.0.0.1:6379> slowlog get
1) 1) (integer) 0 //日志唯一标示
   2) (integer) 1517305551 // 命令执行的UNIX时间戳
   3) (integer) 8248 // 命令执行的时间(微秒)
   4) 1) "config" // 执行的命令及参数
      2) "set"
      3) "slowlog-log-slower-than"
      4) "0"

redis日志

#非容器
tailf /var/log/redis/

#容器
docker logs [参数] 容器
-f    :实时查看
-t    :显示时间戳(相对时间)
--since string   显示自某个timestamp之后的日志,或相对时间,如42m(即42分钟)
--tail string    从日志末尾显示多少行日志, 默认是all

例子:

  查看指定时间后的日志,只显示最后100行:
$ docker logs -f -t --since="2018-02-08" --tail=100 CONTAINER_ID

  查看最近30分钟的日志:
$ docker logs --since 30m CONTAINER_ID

  查看某时间之后的日志:
$ docker logs -t --since="2018-02-08T13:23:37" CONTAINER_ID

  查看某时间段日志:
$ docker logs -t --since="2018-02-08T13:23:37" --until "2018-02-09T12:23:37" CONTAINER_ID

redis连接数异常

#1.查看redis连接数
[root@redis ~]# docker exec -it 22933238fad7 redis-cli info |grep connect
connected_clients:6809
total_connections_received:178835
rejected_connections:0
connected_slaves:0

#2.查看客户端连接状态
[root@redis ~]# redis-cli client list
id=3867 addr=172.18.0.1:33452 fd=1997 name= age=11514 idle=115140(秒) flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=NULL

#3.配置客户端空闲超时时间
    查看redis客户端超时设置
redis-cli config get timeout
1) "timeout"
2) "0"   #0表示不开启空闲清除

    设置空闲清理时间
redis-cli config set timeout 600

redis使用内存异常

#1.查看系统内存
[root@redis ~]$ free -g
             total       used       free     shared    buffers     cached
Mem:            62         61          1          0          0         25
-/+ buffers/cache:         35         27
Swap:            0          0          0 

#2.查看redis使用内存
[root@redis ~]# docker exec -it 22933238fad7 redis-cli info |grep memory
used_memory:890846296
used_memory_human:27G      #
used_memory_rss:877944832
used_memory_rss_human:837.27M
used_memory_peak:942846680
used_memory_peak_human:899.17M
used_memory_peak_perc:94.48%

#3.限制redis使用内存
    立即生效
sysctl vm.overcommit_memory=1

    永久生效
vim /etc/sysctl.conf
vm.overcommit_memory=1
posted @ 2021-03-10 09:29  看萝卜在飘  阅读(790)  评论(0编辑  收藏  举报