redis性能分析工具redis-faina

redis-faina是一个通过解析redis的MONITOR命令,从而对redis实例进行性能诊断的工具。
该工具使用虽然简单,但是功能还是很不错,对于定位线上redis性能问题,确实是一把利器。

通过redis MONITOR命令保存文件用于分析

redis-cli -h 192.168.1.110 -p 6700 monitor |head -n 5000 > redis-6700.txt
redis-cli -h 192.168.1.111 -p 6701 monitor |head -n 5000 > redis-6701.txt

redis-faina读取MONITOR日志进行分析:

./redis-faina.py ../redis_monitor_cmd/redis-6701.txt
Overall Stats
========================================
Lines Processed  	5000   --- 总命令数
Commands/Sec     	16348.00 --- QPS

Top Prefixes  ---前缀最多的数据
========================================
dailyreward      	873	(17.46%)
EXPEND_COIN_KEY  	483	(9.66%)
exclusivereward  	474	(9.48%)
user             	465	(9.30%)
u                	217	(4.34%)
redPackFeed      	206	(4.12%)
vouchers         	131	(2.62%)
newhandtask      	122	(2.44%)

Top Keys ---使用最多的key
========================================
welfareRead                                    	1566	(31.32%)
dailyreward:xx:xx  	72  	(1.44%)
dailyreward:xx:xx  	72  	(1.44%)
dailyreward:xx:xx  	72  	(1.44%)
dailyreward:xx:xx  	64  	(1.28%)
dailyreward:xx:xx   62  	(1.24%)
dailyreward:xx:xx  	60  	(1.20%)
dailyreward:xx:xx   59  	(1.18%)

Top Commands ---使用的最多的命令
========================================
HGET      	4035	(80.70%)
EXPIREAT  	416 	(8.32%)
PING      	137 	(2.74%)
HMGET     	115 	(2.30%)
HINCRBY   	61  	(1.22%)
LRANGE    	39  	(0.78%)
EXPIRE    	35  	(0.70%)
HSET      	30  	(0.60%)

Command Time (microsecs) ---请求的响应时间分布
========================================
Median  	39.0
75%     	77.0
90%     	136.25
99%     	326.0

Heaviest Commands (microsecs) ---总体耗时最多的命令
========================================
HGET      	245469.75
EXPIREAT  	25063.5
PING      	9035.25
HMGET     	8282.0
HINCRBY   	4135.25
EXPIRE    	2172.75
LRANGE    	2000.75
HSET      	1749.5

Slowest Calls  --- 慢请求列表
========================================
620.0   	"HGET" "welfareRead" "3"
571.75  	"HGET" "welfareRead" "3"
531.5   	"HGET" "x"
494.75  	"HGET" "x"
489.0   	"EXPIREAT" "x"
477.0   	"HGET" "x"
471.0   	"HGET" "x"
470.25  	"HMGET" "x"

notes:

大概能看出key的分布
由于redis MONITOR输出的只有请求开始的时间,所以在一个非常繁忙的redis实例中,根据该请求的开始时间以及下一个请求的开始时间,可以大概估算出一个请求的执行时间。由此可以看出,redis-faina统计的时间并不是十分精确的,尤其在分析一个非常闲的redis实例时,分析的结果可能差的很多。


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!