關于 Redis 的性能分析工具 Redis Faina

jopen 9年前發布 | 15K 次閱讀 Redis NoSQL數據庫

這是來自 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>

來自:http://www.v2ex.com/t/147948?r=huangz

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!