最近專案中接連遇到redis出現瓶頸的問題,現在把排查的一些經驗記錄下來備查,本篇只是思路的整理,不涉及具體的使用。
大體的思路如下:
1.通過slow log檢視
參考 檢視下是否有較為明顯的慢查詢?一般認為出現慢查詢的話,redis效能瓶頸已經比較明顯了
2. 通過info 檢視;
info裡面的資訊比較多,通常關注以下幾塊
# memory
used_memory_human:795.13k #redis現在占用的記憶體,有可能包括swap虛擬記憶體。
used_memory_rss:18259968 #系統給redis分配的記憶體
used_memory_peak_human:9.51m #redis所用記憶體的峰值
mem_fragmentation_ratio:22.43 #used_memory_rss/used_memory ,當mem_fragmentation_ratio <1 時,說明used_memory > used_memory_rss,
這時redis已經在使用swap,執行效能會受很大影響。
3. 通過benchmark測試下當前伺服器的效能;
4. 通過monitor測算一次請求對redis操作的次數;
1. info
其本身支援定製返回列表:
[root@~]# redis-cli info詳情請見:[root@~]# redis-cli info default [root@~]# redis-cli info all
2. monitor
monitor是乙個除錯命令,返回伺服器處理的每乙個命令,它能幫助我們了解在資料庫上發生了什麼操作。共有3種操作方法:
[root@~]# redis-cli monitor由於monitor命令返回伺服器處理的所有的命令, 所以在效能上會有一些消耗。使用官方的壓測工具測試結果如下ok1417532512.619715 [0 127.0.0.1:55043] "replconf" "ack" "6623624" [root@~]# telnet 127.0.0.1 6379 trying 127.0.0.1... connected to 127.0.0.1. escape character is '^]'. monitor +ok +1417532567.733458 [0 127.0.0.1:55043] "replconf" "ack" "6623708" +1417532568.735936 [0 127.0.0.1:55043] "replconf" "ack" "6623708" quit +ok connection closed by foreign host. [root@~]# redis-cli 127.0.0.1:6379> monitor ok 1417532590.785487 [0 127.0.0.1:55043] "replconf" "ack" "6623736"
在不執行monitor命令的情況下,benchmark的測試結果:
在執行monitor命令的情況下,benchmark的測試結果: (redis-cli monitor > /dev/null):[root@~/software/redis-2.8.17]# src/redis-benchmark -c 10 -n 100000 -q ping_inline: 51020.41 requests per second ping_bulk: 50607.29 requests per second set: 37257.82 requests per second get: 49800.80 requests per second incr: 38699.69 requests per second lpush: 38910.51 requests per second lpop: 39277.30 requests per second sadd: 54614.96 requests per second spop: 51948.05 requests per second lpush (needed to benchmark lrange): 38819.88 requests per second lrange_100 (first 100 elements): 20112.63 requests per second lrange_300 (first 300 elements): 9025.27 requests per second lrange_500 (first 450 elements): 6836.67 requests per second lrange_600 (first 600 elements): 5406.28 requests per second mset (10 keys): 19394.88 requests per second
可以看到各項指標基本都有所下降。[root@~/software/redis-2.8.17]# src/redis-benchmark -c 10 -n 100000 -q ping_inline: 42211.91 requests per second ping_bulk: 42936.88 requests per second set: 26143.79 requests per second get: 33990.48 requests per second incr: 26553.37 requests per second lpush: 27337.34 requests per second lpop: 27225.70 requests per second sadd: 30459.95 requests per second spop: 39494.47 requests per second lpush (needed to benchmark lrange): 26315.79 requests per second lrange_100 (first 100 elements): 22055.58 requests per second lrange_300 (first 300 elements): 8104.38 requests per second lrange_500 (first 450 elements): 6371.05 requests per second lrange_600 (first 600 elements): 5031.95 requests per second mset (10 keys): 14861.05 requests per second
詳情請見:
3. slowlog
通過slowlog可以讀取慢查詢日誌。
使用slowlog len就可以獲取當前慢日誌長度。
使用slowlog get就可以獲取所有慢日誌。[root@~/software/redis-2.8.17]# redis-cli 127.0.0.1:6379> slowlog len (integer) 28
127.0.0.1:6379> slowlog get 1) 1) (integer) 27 2) (integer) 1417531320 3) (integer) 24623 4) 1) "info"其中,各項指標表示:
使用slowlog get n就可以獲取最近n條慢日誌。
使用slowlog reset命令重置慢日誌。一旦執行,將丟失以前的所有慢日誌。127.0.0.1:6379> slowlog get 2 1) 1) (integer) 27 2) (integer) 1417531320 3) (integer) 24623 4) 1) "info" 2) 1) (integer) 26 2) (integer) 1417528379 3) (integer) 21363 4) 1) "get" 2) "user:score"
最近資料量越來越多,併發寫操作很多的情況下,redis出現響應慢的情況;127.0.0.1:6379> slowlog reset
3. redis延遲時間排查
可以使用 redis命令來測試一下redis的響應速度:
redis-cli --latency -h
***
-p
***x
這條命令會向redis插入示例資料來檢查平均延時。 ctrl+c可以隨時結束測試;
下面我們列一下會出現延時的可能:
redis狀態與效能監控
1 redis benchmark redis基準資訊,redis伺服器效能檢測 redis benchmark h localhost p 6379 c 100 n 100000 100個併發連線,100000個請求,檢測host為localhost 埠為6379的redis伺服器效能 2 red...
Redis安裝 集群 效能監控
最近專案即將上線,由於人手問題,各種研究運維相關知識,這兩天剛弄完redis集群部署的問題,跟大家嘮嘮。以下均是在linux環境下執行,系統ubuntu16.04 sudo wget 複製 sudo tar zxvf redis stable.tar.gz 複製 sudo apt get insta...
運維監控redis效能指標
對外提供符合redis協議的命令訪問介面,使用cluster info命令,檢視集群狀態與節點數,當集群狀態為clusterdown時,代表集群不可用,或集群節點數少於正常節點數目時即存在問題。效能監控使用info命令,具體效能指標如下所示。used memory human 當前使用的最大記憶體。...