1. 程式人生 > >Redis-慢查詢

Redis-慢查詢

  1. 概念

系統在命令執行前後計算每條命令的執行時間,當超過預定閥值時,記錄命令的發生時間,耗時,命令的詳細資訊等。

Redis客戶端執行一條命令分為傳送命令、命令排隊、命令執行、返回結果。慢查詢只統計命令執行,所以沒有慢查詢並不代表客戶端沒有超時問題。

這裡寫圖片描述

  1. 說明
    1. 慢查詢發生在第三階段(執行命令)
    2. 客戶端超時不一定慢查詢,但慢查詢是客戶端超時的一個因素
  2. 兩個配置
    1. slowlog-max-len
      1. 慢查詢是一個先進先出的佇列
      2. 固定長度
      3. 儲存在記憶體中
      4. 設定慢查詢日誌長度,如果慢查詢日誌已經達到最大值,如果有新命令需要記錄,就將最老那條記錄刪除
    2. slowlog-log-slower-than
      1. 慢查詢閾值(單位:微秒)
      2. slowlog-log-slower-than=0,記錄所有命令
      3. slowlog-log-slower-than<0,不記錄所有命令
  3. 配置方法
    1. 預設值
      1. config get slowlog-max-len=128
      2. config get slowlog-log-slower-than=1000
    2. 修改配置檔案重啟(不推薦)
    3. 動態配置
      1. config set slowlog-max-len 1000
      2. config set slowlog-log-slower-than 1000
  4. 慢查詢命令
    1. slowlog get [n]:獲取慢查詢佇列(n指定查詢條數)
      1. 每個命令都由4各部分組成,分別是慢查詢日誌的表示ID,發生時間戳,命令耗時,執行命令和引數
    2. slowlog len:獲取慢查詢佇列長度
    3. slowlog reset:清空慢查詢佇列
  5. 建議
    1. slowlog-log-slower-than不要設定過大,預設是10ms,通常設定1ms
    2. slowlog-max-len不要設定過小,通常設定1000左右
    3. 理解命令生命週期
    4. 定期持久化慢查詢