關于 Redis 的性能分析工具 Redis Faina
這是來自 Instagram 團隊開源的工具,已經幫助我解決了兩次 Redis 相關的性能問題。所以在這里寫一篇短文稍微介紹一下這個工具。
GitHub: https://github.com/非死bookarchive/redis-faina
Instagram 團隊博客的官方文章: http://instagram-engineering.tumblr.com/post/23132009381/redis-faina-a-query-analysis-tool-for-redis
這是一個用 Python 寫的工具,所以在使用之前,請確保已經安裝了 Python 的 redis 客戶端:
pip install redis
然后可以用這樣的方式啟動這個工具:
redis-cli -p 6379 MONITOR | head -n <NUMBER OF LINES TO ANALYZE> | ./redis-faina.py
其中 -p 后面的參數是 Redis 的端口號,head -n 可以指定要采樣的日志行數。
所以其基本工作方式是,通過 MONITOR 指令收集指定行數的運行日志,然后可以把其中最慢的一些指令統計出來。這樣你就可以在程序中進行調整,去掉會影響性能的這些調用,比如 KEYS 之類。
因為 Redis 的性能通常是非常好的,所以如果看到最慢指令的輸出中有超過 1000 毫秒的結果,那很有可能是服務器內存不夠導致的問題。
最好的情況下,是 Slowest Calls 中沒有超過 100 毫秒的調用。這是優化目標。
下面是 redis-faina 的一個輸出例子。
Overall Stats
========================================
Lines Processed 117773
Commands/Sec 11483.44
Top Prefixes
========================================
friendlist 69945
followedbycounter 25419
followingcounter 10139
recentcomments 3276
queued 7
Top Keys
========================================
friendlist:zzz:1:2 534
followingcount:zzz 227
friendlist:zxz:1:2 167
friendlist:xzz:1:2 165
friendlist:yzz:1:2 160
friendlist:gzz:1:2 160
friendlist:zdz:1:2 160
friendlist:zpz:1:2 156
Top Commands
========================================
SISMEMBER 59545
HGET 27681
HINCRBY 9413
SMEMBERS 9254
MULTI 3520
EXEC 3520
LPUSH 1620
EXPIRE 1598
Command Time (microsecs)
========================================
Median 78.25
75% 105.0
90% 187.25
99% 411.0
Heaviest Commands (microsecs)
========================================
SISMEMBER 5331651.0
HGET 2618868.0
HINCRBY 961192.5
SMEMBERS 856817.5
MULTI 311339.5
SADD 54900.75
SREM 40771.25
EXEC 28678.5
Slowest Calls
========================================
3490.75 "SMEMBERS" "friendlist:zzz:1:2"
2362.0 "SMEMBERS" "friendlist:xzz:1:3"
2061.0 "SMEMBERS" "friendlist:zpz:1:2"
1961.0 "SMEMBERS" "friendlist:yzz:1:2"
1947.5 "SMEMBERS" "friendlist:zpz:1:2"
1459.0 "SISMEMBER" "friendlist:hzz:1:2" "zzz"
1416.25 "SMEMBERS" "friendlist:zhz:1:2"
1389.75 "SISMEMBER" "friendlist:zzx:1:2" "zzz"
</div>
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!