Redis學習筆記—慢查詢分析

慢查詢日誌幫助開發人員定位系統存在的慢操作,慢查詢就是系統在命令執行前後計算的每條命令的執行時間,當超過預設閾值,就將這條命令的相關信息(例如:發生時間,耗時,命令的詳細信息)記錄下來,Redis提供類似的功能

客戶端請求的四個執行步驟

1.發送命令——2.排隊等待執行——3.執行命令——4.返回結果

慢查詢只統計步驟3執行命令的這一步,所以沒有慢查詢並不等於客戶端沒有超時的情況

慢查詢的配置參數

在redis.conf配置文件中有兩個配置項:slowlog-log-slower-than和slowlog-max-len

slowlog-log-slower-than表示預設的閾值,默認爲10000微秒(1秒=1000毫秒=1000000微秒),如果一條命令執行時間超過了10000微秒就會被記錄放在慢查詢日誌中
如果slowlog-log-slower-than設置爲0就會記錄所有的命令,設置爲小於0就不會記錄任何的命令

slowlog-max-len:Redis使用了一個列表來存儲慢查詢日誌,此配置就是這個列表的最大長度,默認爲128條,如果記錄多於128條會刪除最先插入的數據

如果想要修改配置可以直接在redis客戶端進行修改,以slowlog-max-len爲例

127.0.0.1:6379> config set slowlog-max-len 512
OK
127.0.0.1:6379> config rewrite
OK

在查看配置文件,發現slowlog-max-len配置已經修改爲512了

獲取慢查詢日誌

雖然慢查詢日誌是存放在Redis內存列表中的,但是Redis並沒有暴露這個列表的鍵,而是通過一組命令來實現對慢查詢日誌的訪問和管理。

slowlog get [n]

查詢兩條慢查詢記錄,此處的[n]爲選填項,如果不填查詢所有,如果填就是查詢指定的條數

127.0.0.1:6379> slowlog get "2"
1) 1) (integer) 12
   2) (integer) 1552899968
   3) (integer) 1000502
   4) 1) "migrate"
      2) "127.0.0.1"
      3) "6379"
      4) "a"
      5) "1"
      6) "1000"
      7) "copy"
   5) "127.0.0.1:35730"
   6) ""
2) 1) (integer) 11
   2) (integer) 1552899943
   3) (integer) 1000909
   4) 1) "migrate"
      2) "127.0.0.1"
      3) "6379"
      4) "a"
      5) "0"
      6) "1000"
      7) "copy"
   5) "127.0.0.1:35730"
   6) ""

四個主要參數

  • 慢查詢日誌的標識id
  • 發生時間戳
  • 命令耗時
  • 執行命令和參數

獲取慢查詢列表長度

slowlog len

當前有13條慢查詢

127.0.0.1:6379> slowlog len
(integer) 13

清除慢查詢列表

slowlog reset

清除當前慢查詢列表

127.0.0.1:6379> slowlog len
(integer) 13
127.0.0.1:6379> slowlog reset
OK
127.0.0.1:6379> slowlog len
(integer) 0
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章