redis作为一个服务,和普通的oracle,mysql服务器运维维护和系统调优是一样的。
关注内存,CPU,网络IO,阻塞等。由于不会涉及复杂的SQL业务逻辑,缺少SQL调优这一块。
1.通过INFO命令,要清楚了解服务器的现状。
参照:http://redisdoc.com/server/info.html
section | |
server | 记录了 Redis 服务器的信息 |
clients | 记录了已连接客户端的信息(确认并发情况,繁忙程度) |
memory | 记录了服务器的内存信息 (确认内存消耗,内存碎片) |
persistence | 记录了跟 RDB 持久化和 AOF 持久化有关的信息(确认是否引起性能IO) |
stat | 一般统计信息(确认并发情况,繁忙程度,命中率) |
replication | 主/从复制信息(同步情况) |
cpu | CPU 的计算量统计信息 |
keyspace | 记录了数据库相关的统计信息 |
2.常用运维操作
#探测服务是否可用
[root@hadoop2 redis]# bin/redis-cli
127.0.0.1:6379> ping
PONG
#监控redis请求执行信息
127.0.0.1:6379> monitor
OK
1472956931.192969 [0 127.0.0.1:42936] "COMMAND"
1472956948.127475 [0 127.0.0.1:42936] "set" "title" "moniter"
1472956964.712026 [0 127.0.0.1:42936] "keys" "*"
#查看redis数据库统计信息
127.0.0.1:6379> info
# Server
redis_version:3.2.3
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:7994844ebb5a3a63
redis_mode:standalone
...
#查看配置
127.0.0.1:6379> config get loglevel
1) "loglevel"
2) "notice"
#临时修改配置
127.0.0.1:6379> config set loglevel 111
(error) ERR Invalid argument '111' for CONFIG SET 'loglevel'
127.0.0.1:6379> config set loglevel debug
OK
#这会导致修改redis.conf文件
127.0.0.1:6379> config rewrite
OK
#批量执行操作
gnuhpc@gnuhpc:~$ (echo -en "ping\r\nset key abc\r\nget key\r\n";sleep 1) | nc 127.0.0.1 6379
+PONG
+OK
$3
abc
在一个脚本中批量执行多个写入操作:
先把插入操作放入操作文本insert.dat:
set a b
set 1 2
set h w
set f u
然后执行命令:cat insert.bat | ./redis-cli --pipe,或者如下脚本:
#!/bin/sh
host=$1
port=$;
password=$3
cat insert.dat | ./redis-cli -h $host -p $port -a $password --pipe
以下内容来自[http://www.cnblogs.com/gnuhpc/]
1.10 模拟宕机
redis-cli debug segfault
1.11 模拟hang
redis-cli -p 6379 DEBUG sleep 30
1.12 重命名命令
rename-command,例如:rename-command FLUSHALL ""。必须重启。
1.13 执行lua脚本
- -eval 。例如:
redis-cli --eval myscript.lua key1 key2 , arg1 arg2 arg3
1.14 设置密码
config set requirepass [passw0rd]
1.15 验证密码
auth passw0rd
1.16 性能测试命令
redis-benchmark -n 100000
1.17 获取慢查询
SLOWLOG GET 10
结果为查询ID、发生时间、运行时长和原命令
1.18 查看日志
日志位置在/redis/log下,redis.log为redis主日志,sentinel.log为sentinel监控日志。
一般处理(发现问题)流程
1 | 探测服务是否可用 | 127.0.0.1:6379> ping |
2 | 探测服务延迟 | redis-cli --latency 显示的单位是milliseconds,作为参考,千兆网一跳一般延迟为0.16ms左右 |
3 | 监控正在请求执行的命令 | 在cli下执行monitor,生产环境慎用。 |
4 | 查看统计信息 | info |
5 | 获取慢查询 | SLOWLOG GET 10 结果为查询ID、发生时间、运行时长和原命令 默认10毫秒,默认只保留最后的128条。单线程的模型下,一个请求占掉10毫秒是件大事情,注意设置和显示的单位为微秒,注意这个时间是不包含网络延迟的。 slowlog get slowlog len |
6 | 查看客户端 | client list 列出所有连接 client kill 杀死某个连接, 例如CLIENT KILL 127.0.0.1:43501 client getname # 获取连接的名称 默认nil client setname "名称" 设置连接名称,便于调试 |
7 | 查看日志 |
参考资源
http://www.cnblogs.com/gnuhpc/p/4609592.html
https://gnuhpc.gitbooks.io
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。