通过redis的monitor命令排除故障
2015-06-04 23:26
471 查看
项目里有10台服务器都在一个刀箱里,其中一台是redis缓存服务器,另外的是app服务器。通过监控发现这个刀箱的流量750M,其中缓存服务器的流量达105M,这么高的流量已经造成其它项目的服务器网络延时,丢包,已经影响了正常的业务。通过分析基本可以断定流量产生来自于app服务器对redis服务器数据调用,至于为什么为产生大流量,需要进一步分析,redis的monitor命令可以实时打印出 redis 服务器接收到的命令,我们就通过这些数据进行分析。
1、抓取几分钟的数据,然后手动终止命令(我取了7分钟,70多万行数据):
redis-cli monitor >19-2.txt
wc -l 19-2.txt
784565 19-2.txt
2、取关键字GET的进行分析,统计key的get次数:
awk '/GET/{a[$3]++}END{for(i in a)print i"\t"a[i]}' 19-2.txt |sort -k2nr|more
3、通过type命令查看发现排名第1的key类型是string类型,将value get出来保存到一个文件,du一下发现竟然有1.6M。在7分钟之内get了17000多次,折算下来平均每秒钟产生约70M的流量,再加上其它key的读写产生的流量应该有100M左右,和监控到的流量差不多,最后查到这个key是上周上线后才有的。将情况告诉开发,变更存储方式,更改代码连夜上线,问题解决。
1、抓取几分钟的数据,然后手动终止命令(我取了7分钟,70多万行数据):
redis-cli monitor >19-2.txt
wc -l 19-2.txt
784565 19-2.txt
2、取关键字GET的进行分析,统计key的get次数:
awk '/GET/{a[$3]++}END{for(i in a)print i"\t"a[i]}' 19-2.txt |sort -k2nr|more
3、通过type命令查看发现排名第1的key类型是string类型,将value get出来保存到一个文件,du一下发现竟然有1.6M。在7分钟之内get了17000多次,折算下来平均每秒钟产生约70M的流量,再加上其它key的读写产生的流量应该有100M左右,和监控到的流量差不多,最后查到这个key是上周上线后才有的。将情况告诉开发,变更存储方式,更改代码连夜上线,问题解决。
相关文章推荐
- redis 集群配置
- Java中使用Jedis操作Redis
- java对redis的基本操作
- Redis命令总结
- open redis port for remote connections
- redis两种调用方式实例
- Redis学习笔记1--入门篇
- Centos编译安装 LAMP (apache-2.4.7 + mysql-5.5.35 + php 5.5.8)+ Redis
- 基于redis集群实现的分布式锁,可用于秒杀商品的库存数量管理,有测试代码(何志雄)
- Redis3.0.1集群环境搭建
- 几点建议,让Redis在你的系统中发挥更大作用
- java 版本的redis-stat不能运行在后台和daemon
- java对redis的基本操作
- redis-cli 命令总结
- redis问题解决
- 深入理解Redis主键失效原理及实现机制
- redis(jedis)相关API ,实现与关系型数据库相似的功能
- 自己动手,部署Redis服务器
- Redis入门系列之事务
- Redis入门系列之队列和发布订阅模式