linux redis cpu 100,Redis监控汇总(1/2)

Redis监控汇总一.md

一、概述

对于任何运行在生产环境的软件,监控都是必不可少的一个环节。

我们在分析各种工具之前,先来看下redis都有哪些指标需要关注和监控。

Redis监控的用途有两种,一种是类似于zabbix,监控指标并用来报警,另外一种就是出现问题时,快速定位问题使用的。

各个数据库db的key数量、redis存储的key总数量

redis内存使用状况

redis使用CPU状况

redis当前的QPS

redis中数据请求的命中率

key的过期和逐出情况

当前redis的客户端情况

Redis网络出入带宽

redis客户端发起的命令排行(TOP 10 命令)

主从、RDB和AOF持久化及其他

redis自带了redis-cli工具,基本上可以覆盖以上一些指标,但是有很多指标需要经过进一步处理才可以显示。我们后面会逐个分析。

二、redis-cli命令

redis-cli是redis自带的客户端工具,可以执行丰富的redis命令,当然也提供了很多的监控数据。

2.1 info命令

info命令是redis最基本的监控数据

[root@Ali-BJ-OL-99 ~]# redis-cli info

# Server

redis_version:3.2.8

redis_git_sha1:00000000

redis_git_dirty:0

redis_build_id:d3e3dd6ceee8d380

redis_mode:standalone

os:Linux 2.6.32-573.22.1.el6.x86_64 x86_64

arch_bits:64

multiplexing_api:epoll

gcc_version:4.4.7

process_id:6048

run_id:6971ef604fa47e0d243993e31e376175eab35583

tcp_port:6379

uptime_in_seconds:3732962

uptime_in_days:43

hz:10

lru_clock:10546323

executable:/usr/bin/redis-server

config_file:/etc/redis.conf

# Clients

##@@客户端情况

connected_clients:71

client_longest_output_list:0

client_biggest_input_buf:0

blocked_clients:0

# Memory

##@@当前redis占用的内存,也显示了maxmemory和maxmemory_policy参数的值。

used_memory:13085437256

used_memory_human:12.19G

used_memory_rss:13872644096

used_memory_rss_human:12.92G

used_memory_peak:13085903160

used_memory_peak_human:12.19G

total_system_memory:16726142976

total_system_memory_human:15.58G

used_memory_lua:37888

used_memory_lua_human:37.00K

maxmemory:13500000000

maxmemory_human:12.57G

maxmemory_policy:volatile-lru

mem_fragmentation_ratio:1.06

mem_allocator:jemalloc-4.0.3

# Persistence

##持久化相关内容

loading:0

rdb_changes_since_last_save:220962

rdb_bgsave_in_progress:1

rdb_last_save_time:1520495145

rdb_last_bgsave_status:ok

rdb_last_bgsave_time_sec:115

rdb_current_bgsave_time_sec:17

aof_enabled:0

aof_rewrite_in_progress:0

aof_rewrite_scheduled:0

aof_last_rewrite_time_sec:-1

aof_current_rewrite_time_sec:-1

aof_last_bgrewrite_status:ok

aof_last_write_status:ok

# Stats

total_connections_received:882320

total_commands_processed:2796368475

instantaneous_ops_per_sec:820 #QPS

total_net_input_bytes:206269274267

total_net_output_bytes:221172814051

instantaneous_input_kbps:56.02 #带宽数据

instantaneous_output_kbps:25.40

rejected_connections:0

sync_full:0

sync_partial_ok:0

sync_partial_err:0

expired_keys:209363123

evicted_keys:79500926

keyspace_hits:722384216

keyspace_misses:128646755

pubsub_channels:0

pubsub_patterns:0

latest_fork_usec:194435

migrate_cached_sockets:0

# Replication

##@@主从相关内容

role:master

connected_slaves:0

master_repl_offset:0

repl_backlog_active:0

repl_backlog_size:1048576

repl_backlog_first_byte_offset:0

repl_backlog_histlen:0

# CPU

##@@CPU状态,这个值需要进行计算后才能得出CPU利用率。

used_cpu_sys:89819.95

used_cpu_user:45773.93

used_cpu_sys_children:19337.14

used_cpu_user_children:514401.09

# Cluster

cluster_enabled:0

# Keyspace

db0:keys=13678267,expires=10984098,avg_ttl=550750775

##@@这里显示了各个数据库key的存放数目,也可以通过select db后,dbsize计算当前db中key的数量。

info命令只是总体显示了一些监控数据,redis-cli还有其他监控项目,比如

2.2 查看和杀掉客户端连接

##@@列出客户端

127.0.0.1:6379> CLIENT LIST

id=881455 addr=172.28.0.87:36377 fd=12 name= age=4882 idle=5 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=del

id=881976 addr=172.28.0.95:42077 fd=35 name= age=2334 idle=9 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=setnx

id=881899 addr=172.28.0.95:40057 fd=38 name= age=2729 idle=6 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=ping

##@@杀掉客户端(不实用,自己一会儿就连上了)

127.0.0.1:6379> CLIENT KILL 172.28.0.95:40057

2.3 stat命令

此命令可以显示key数量、内存、客户端数量、QPS情况,类似于iostat、vmstat之类每秒钟刷新一次,如下

[root@Ali-BJ-OL-99 fio]# redis-cli -h 127.0.0.1 -p 6379 --stat

------- data ------ --------------------- load -------------------- - child -

keys mem clients blocked requests connections

12495867 11.93G 57 0 2774586381 (+0) 878430

12495972 11.93G 57 0 2774587430 (+1049) 878430

12496038 11.93G 57 0 2774588265 (+835) 878430

12496149 11.93G 57 0 2774589330 (+1065) 878430

12496225 11.93G 57 0 2774590345 (+1015) 878430

12496326 11.93G 57 0 2774591469 (+1124) 878430

12496428 11.93G 57 0 2774592548 (+1079) 878430

如果你的redis设置了密码,需要加上参数”-a yourpassword”。

2.4 查看redis延迟

–latency, –latency-history 参数可以参看redis当前的响应延迟情况。

[root@Ali-BJ-OL-99 ~]# redis-cli -h 127.0.0.1 -p 6379 --latency

min: 7, max: 1230, avg: 66.22 (89 samples)

2.5 使用monitor开启实时监控

monitor命令会监控当前redis接受的命令和数据内容,这个命令会比较消耗资源,根据官网的测试,QPS会下降到原先的50%,需要谨慎使用。

[root@Ali-BJ-OL-99 ~]# redis-cli monitor

OK

1520496864.844638 [0 172.28.0.95:40594] "SETNX" "CSCustomer_5ad69f0b068f278e01c2ef5f701ec5a5" "1"

1520496864.845212 [0 172.28.0.27:10706] "GET" "lock_:4211022454185883_20003"

1520496864.846564 [0 172.28.0.27:10706] "DEL" "lock_:4211022454185883_20003"

我们可以将 redis-cli monitor数据写入到文件,然后就可以手动分析命令执行的次数。

[root@Ali-BJ-OL-99 ~]# cat m.log |awk '{print $4}' |sort |uniq -c |sort -nr

3523 "SETNX"

1488 "GET"

1253 "SADD"

1142 "PING"

2.6 使用bigkeys查找占用空间较大的key

–bigkeys这条命令会使用SCAN从redis里面查找占用空间最大的key,这会遍历redis数据库。

但是他只把最大的找出来了,不怎么实用,至少来个TOP10吧。

[root@Ali-BJ-OL-99 ~]# redis-cli --bigkeys

# Scanning the entire keyspace to find biggest keys as well as

# average sizes per key type. You can use -i 0.1 to sleep 0.1 sec

# per 100 SCAN commands (not usually needed).

[00.00%] Biggest string found so far 'priv_key_78410' with 1 bytes

[00.09%] Biggest string found so far 'bigkey' with 573 bytes

[50.22%] Biggest string found so far 'bigkey2' with 606 bytes

-------- summary -------

Sampled 81697 keys in the keyspace!

Total key length in bytes is 1133020 (avg len 13.87)

Biggest string found 'bigkey2' has 606 bytes

81697 strings with 83563 bytes (100.00% of keys, avg size 1.02)

0 lists with 0 items (00.00% of keys, avg size 0.00)

0 sets with 0 members (00.00% of keys, avg size 0.00)

0 hashs with 0 fields (00.00% of keys, avg size 0.00)

0 zsets with 0 members (00.00% of keys, avg size 0.00)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值