redis 慢日志查詢


Intro

可能有一些命令需要很長時間才能在redis服務器上處理,導致請求超時。 長時間運行的命令的很少例子有 mget有大量的鍵,鍵*或寫得不好的lua腳本。 可以運行通過 SlowLog 命令查看是否有請求花費比預期更長的時間。

Redis 慢日志概覽

Redis Slow Log 是一個系統,用於記錄超過指定執行時間的查詢。執行時間不包括I / O操作,如與客戶端交談,發送回復等等,但只是實際執行命令所需的時間(這是執行命令的唯一階段,其中線程被阻止並且不能同時服務於其他請求)。

您可以使用兩個參數配置慢日志:

  • slowlog-log-slow-than 告訴 Redis 為了記錄命令,執行時間(微秒)超過了多少。請注意,負數將禁用慢日志,而值為零將強制記錄每條命令。
    slowlog-max-len 是慢日志的長度。最小值為零。當記錄新的命令並且慢日志已經處於其最大長度時,為了留出空間,將最老的命令從記錄的命令隊列中移除。

配置可以通過編輯 redis.conf 或服務器運行時使用 CONFIG GETCONFIG SET 命令來完成。

查看慢日志

慢日志在內存中累積,因此沒有寫入關於慢命令執行信息的文件。這使得日志記錄非常快,可以啟用所有命令的日志記錄(將slowlog-log-slow- config配置參數設置為零),同時影響較小。

要讀取慢日志,使用SLOWLOG GET命令,該命令將返回慢日志中的每個條目。可以僅返回N個最近的條目,並將其他參數傳遞給該命令(例如SLOWLOG GET 10)。

請注意,為了讀取慢日志輸出,您需要使用 redis-cli 的最新版本,因為它使用了以前在 redis-cli 中執行的一些協議功能(深度嵌套的多批量響應)

輸出格式

redis 127.0.0.1:6379> slowlog get 2
1) 1) (integer) 14
   2) (integer) 1309448221
   3) (integer) 15
   4) 1) "ping"
2) 1) (integer) 13
   2) (integer) 1309448128
   3) (integer) 30
   4) 1) "slowlog"
       2) "get"
       3) "100"

每個條目由四個字段組成:

  • 每個慢日志條​​目的唯一漸進標識符。
  • 處理記錄的命令的UNIX時間戳。
  • 執行所需的時間量,以微秒為單位。
  • 組成命令參數的數組。

該條目的唯一ID可用於避免多次處理緩慢的日志條目(例如,您可能有一個腳本為每個新的慢日志條目發送電子郵件警報)。

在 Redis 服務器執行過程中,ID永遠不會被重置,只有服務器重啟才會重置它。

獲取慢日志的當前數量

使用命令 SLOWLOG LEN 可以獲得慢日志的長度 。

重置慢日志

你可以使用 SLOWLOG RESET 命令重置慢日志。一旦刪除,信息將永遠丟失。

Reference


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM