**於
1、傳送命令
2、命令排隊
3、命令執行
4、返回結果
注意:慢查詢只統計步驟3的時間,所以沒有慢查詢並不代表客戶端沒有超時問題。換句話說。redis的慢查詢記錄時間指的是不包括像客戶端響應、傳送回覆等io操作,而單單是執行乙個查詢命令所耗費的時間。
config setslowlog-log-slower-than 20000
config setslowlog-max-len 1024
config rewrite
(1) 獲取慢查詢日誌
slowlog get n (引數n用來指定查詢的條數)127.0.0.1:6379>slowlog get
1)1)(integer)8#日誌的唯一識別符號
2)(integer)1550636908#命令執行是的unix時間戳
3)(integer)113359#命令執行的時長,單位微妙
4)1)"slowlog"#執行的命令及命令引數
2)"get"
5)"127.0.0.1:59282"
6)""
2)1)(integer)7
2)(integer)1550636874
3)(integer)35369
4)1)"config"
2)"get"
3)"slowlog-log-slower-than"
5)"127.0.0.1:59282"
6)""
3)1)(integer)6
2)(integer)1542409903
3)(integer)154936
4)1)"replconf"
2)"ack"
3)"7677418"
5)"127.0.0.1:36457"
6)""
4)1)(integer)5
2)(integer)1538705609
3)(integer)53655
4)1)"replconf"
2)"ack"
3)"2503774"
5)"127.0.0.1:36457"
6)""
5)1)(integer)4
2)(integer)1538316696
3)(integer)124241
4)1)"replconf"
2)"ack"
3)"1960644"
5)"127.0.0.1:45997"
6)""
6)1)(integer)3
2)(integer)1537459324
3)(integer)161244
4)1)"replconf"
2)"ack"
3)"763182"
5)"127.0.0.1:36457"
6)""
7)1)(integer)2
2)(integer)1537293989
3)(integer)108165
4)1)"replconf"
2)"ack"
3)"532252"
5)"127.0.0.1:36457"
6)""
8)1)(integer)1
2)(integer)1536932942
3)(integer)37250
4)1)"replconf"
2)"ack"
3)"28028"
5)"127.0.0.1:36457"
6)""
9)1)(integer)0
2)(integer)1536912894
3)(integer)12932
4)1)"config"
2)"get"
3)"dir"
5)"127.0.0.1:46522"
6)""
127.0.0.1:6379>slowlog get2
1)1)(integer)8
2)(integer)1550636908
3)(integer)113359
4)1)"slowlog"
2)"get"
5)"127.0.0.1:59282"
6)""
2)1)(integer)7
2)(integer)1550636874
3)(integer)35369
4)1)"config"
2)"get"
3)"slowlog-log-slower-than"
5)"127.0.0.1:59282"
6)""
(2) 獲取慢查詢日誌列表當前數量
slowlog len
127.0.0.1:6379>slowlog len
(integer)9
(3) 慢查詢日誌重置
slowlog reset
127.0.0.1:6379>slowlog reset
ok127.0.0.1:6379>slowlog len
(integer)0
在生產環境中,慢查詢功能可以有效地幫助我們找到redis可能存在的瓶頸,但在實際使用過程中要注意以下幾點:
1、slowlog-max-len:線上建議調大慢查詢列表,記錄慢查詢時redis會對長命令做階段操作,並不會占用大量記憶體.增大慢查詢列表可以減緩慢查詢被剔除的可能,例如線上可設定為1000以上.2、slowlog-log-slower-than:預設值超過10毫秒判定為慢查詢,需要根據redis併發量調整該值.
3、慢查詢只記錄命令的執行時間,並不包括命令排隊和網路傳輸時間.因此客戶端執行命令的時間會大於命令的實際執行時間.因為命令執行排隊機制,慢查詢會導致其他命令級聯阻塞,因此客戶端出現請求超時時,需要檢查該時間點是否有對應的慢查詢,從而分析是否為慢查詢導致的命令級聯阻塞.
4、由於慢查詢日誌是乙個先進先出的佇列,也就是說如果慢查詢比較多的情況下,可能會丟失部分慢查詢命令,為了防止這種情況發生,可以定期執行slowlog get命令將慢查詢日誌持久化到其他儲存中(例如:mysql等),然後可以通過視覺化工具進行查詢.
redis慢查詢日誌
許多儲存系統 如 mysql 提供慢查詢日誌幫助開發與運維人員定位系統存在的慢操作.所謂慢查詢日誌就是系統在命令執行前後計算每條命令的執行時間,當超過預設閾值,就將這條命令的相關資訊 例如 發生時間,耗時,命令的詳細資訊 記錄到慢查詢日誌中,redis也提供了類似的功能.slowlog get n ...
Redis 慢日誌查詢
連線 redis cli h host p port a password 認證 redis 127.0.0.1 6379 auth password ok redis 127.0.0.1 6379 ping pong 檢視慢日誌引數 config get slowlog 127.0.0.1 637...
redis設定慢查詢日誌
redis 的慢查詢日誌功能用於記錄執行時間超過給定時長的命令請求,使用者可以通過這個功能產生的日誌來監視和優化查詢速度。1 redis生命週期 慢查詢發生在第3階段 2 兩個配置 2.1 slowlog max len 選項指定伺服器最多儲存多少條慢查詢日誌。伺服器使用先進先出的方式儲存多條慢查詢...