redis 效能監控和排查

2021-09-06 23:21:31 字數 4336 閱讀 4524

最近專案中接連遇到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

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命令返回伺服器處理的所有的命令, 所以在效能上會有一些消耗。使用官方的壓測工具測試結果如下

在不執行monitor命令的情況下,benchmark的測試結果:

[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

在執行monitor命令的情況下,benchmark的測試結果: (redis-cli monitor > /dev/null):

[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就可以獲取當前慢日誌長度。

[root@~/software/redis-2.8.17]# redis-cli 127.0.0.1:6379> slowlog len (integer) 28

使用slowlog get就可以獲取所有慢日誌。

127.0.0.1:6379> slowlog get 1) 1) (integer) 27 2) (integer) 1417531320 3) (integer) 24623 4) 1) "info"

其中,各項指標表示:

使用slowlog get n就可以獲取最近n條慢日誌。

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"

使用slowlog reset命令重置慢日誌。一旦執行,將丟失以前的所有慢日誌。

127.0.0.1:6379> slowlog reset

3. redis延遲時間排查

最近資料量越來越多,併發寫操作很多的情況下,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 當前使用的最大記憶體。...