1. 程式人生 > 資料庫 >詳解Redis的慢查詢日誌

詳解Redis的慢查詢日誌

Redis慢查詢日誌幫助開發和運維人員定位系統存在的慢操作。慢查詢日誌就是系統在命令執行前後計算每條命令的執行時間,當超過預設閥值,就將這條命令的相關資訊(慢查詢ID,發生時間戳,耗時,命令的詳細資訊)記錄下來。

Redis客戶端一條命令分為如下四部分執行:

詳解Redis的慢查詢日誌

需要注意的是,慢查詢日誌只是統計步驟3)執行命令的時間,所以慢查詢並不代表客戶端沒有超時問題。需要注意的是,慢查詢日誌只是統計步驟3)執行命令的時間,所以慢查詢並不代表客戶端沒有超時問題。

一、慢查詢的配置引數:

  • 慢查詢的預設閥值 slowlog-log-slower-than

slowlog-log-slower-than引數就是預設閥值,單位是微秒,預設值是10000,如果一條命令的執行時間超過10000微妙,那麼它將被記錄在慢查詢日誌中。

如果slowlog-log-slower-than的值是0,則會記錄所有命令。
如果slowlog-log-slower-than的值小於0,則任何命令都不會記錄日誌。

  • 慢查詢日誌的長度slowlog-max-len

slowlog-max-len只是說明了慢查詢日誌最多儲存多少條。Redis使用一個列表來儲存慢查詢日誌,showlog-max-len就是列表的最大長度。當慢查詢日誌已經到達列表的最大長度時,又有慢查詢日誌要進入列表,則最早插入列表的日誌將會被移出列表,新日誌被插入列表的末尾。

二、慢查詢日誌的組成

慢查詢日誌由以下四個屬性組成:
標識ID,發生時間戳,命令耗時,執行命令和引數

三、慢查詢日誌的訪問和管理

獲取慢查詢日誌slowlog get [n]
命令:slowlog get [N]
選型:N,可選,代表獲取的日誌條數
例如:showlog get 5

四、慢查詢日誌最佳實踐

  • slowlog-max-len的設定建議

線上環境建議調大慢查詢日誌的列表,記錄慢查詢日誌時Redis會對長命令做截斷操作,並不會佔用大量記憶體。增大慢查詢列表可以減緩慢查詢被剔除出列表的可能性。例如線上可以設定為1000以上。

  • slowlog-log-lower-than的設定建議

需要根據redis的併發量調整該值。由於redis採用單執行緒響應名利,對於高流量的場景,如果執行命令的時間在1毫秒以上,那麼redis最多可支撐OPS(每秒操作次數)不到1000,因此高OPS場景的REDIS建議設定為1毫秒。

  • 慢查詢只記錄命令執行時間,並不包括命令排隊時間和網路傳輸時間。

因此客戶端命令的執行時間要大於redis伺服器實際執行命令的時間。因為命令執行排隊極致,慢查詢會導致命令級聯阻塞,因此當客戶端出現請求超時,需要檢查該時間點是否有對應的慢查詢,從而分析是否因為慢查詢導致的命令級聯阻塞

  • 慢查詢日誌是一個先進先出佇列

慢查詢較多的情況下,可能會丟失部分慢查詢命令,可以定期執行slow get命令將慢查詢日誌持久化到其他儲存中。然後製作視覺化介面查詢。

以上就是詳解Redis的慢查詢日誌的詳細內容,更多關於Redis 慢查詢日誌的資料請關注我們其它相關文章!