Redis-慢查詢
阿新 • • 發佈:2019-01-09
- 概念
系統在命令執行前後計算每條命令的執行時間,當超過預定閥值時,記錄命令的發生時間,耗時,命令的詳細資訊等。
Redis客戶端執行一條命令分為傳送命令、命令排隊、命令執行、返回結果。慢查詢只統計命令執行,所以沒有慢查詢並不代表客戶端沒有超時問題。
- 說明
- 慢查詢發生在第三階段(執行命令)
- 客戶端超時不一定慢查詢,但慢查詢是客戶端超時的一個因素
- 兩個配置
- slowlog-max-len
- 慢查詢是一個先進先出的佇列
- 固定長度
- 儲存在記憶體中
- 設定慢查詢日誌長度,如果慢查詢日誌已經達到最大值,如果有新命令需要記錄,就將最老那條記錄刪除
- slowlog-log-slower-than
- 慢查詢閾值(單位:微秒)
- slowlog-log-slower-than=0,記錄所有命令
- slowlog-log-slower-than<0,不記錄所有命令
- slowlog-max-len
- 配置方法
- 預設值
- config get slowlog-max-len=128
- config get slowlog-log-slower-than=1000
- 修改配置檔案重啟(不推薦)
- 動態配置
- config set slowlog-max-len 1000
- config set slowlog-log-slower-than 1000
- 預設值
- 慢查詢命令
- slowlog get [n]:獲取慢查詢佇列(n指定查詢條數)
- 每個命令都由4各部分組成,分別是慢查詢日誌的表示ID,發生時間戳,命令耗時,執行命令和引數
- slowlog len:獲取慢查詢佇列長度
- slowlog reset:清空慢查詢佇列
- slowlog get [n]:獲取慢查詢佇列(n指定查詢條數)
- 建議
- slowlog-log-slower-than不要設定過大,預設是10ms,通常設定1ms
- slowlog-max-len不要設定過小,通常設定1000左右
- 理解命令生命週期
- 定期持久化慢查詢