Redis命令執行步驟
- 發送命令
- 命令排隊
- 命令執行
- 返回結果
慢查詢只統計步驟3命令執行的時間,所以沒有慢查詢並不代表客戶端沒有超時問題。
配置項
- slowlog-log-slower-than代表一條命令執行超過多少微秒就會記錄爲慢查詢,默認爲10000
- slowlog-max-len代表慢查詢日誌最多存儲多少條,默認爲128,超出後,先記錄的會被頂掉
相關命令
- slowlog get [n]:獲取當前記錄的慢查詢,參數n可以指定條數,每條返回值包括4部分,日誌唯一id、執行時間戳、執行時間(單位微秒)、命令和參數
- slowlog len:獲取慢查詢日誌的條數
- slowlog reset:慢查詢日誌重置
配置建議
- slowlog-max-len建議線上配置1000以上,降低慢查詢被剔除的可能
- slowlog-log-slower-than在高併發場景建議設置爲1毫秒,也就是1000
- 當客戶端出現請求超時,需要檢查該時間點是否有定影的慢查詢,從而分析出是否爲慢查詢導致的命令級聯阻塞
- 可以定期執行slow get命令將慢查詢日誌持久化到MySQL中(開源工具:https://github.com/sohutv/cachecloud)