Redis 慢查詢分析 (八)

2021-08-26 05:15:19 字數 2131 閱讀 6804

慢查詢日誌就是系統在命令執行前後計算每條命令的執行時間。當超過預設的閥值就把它記錄下來。

redis執行命令分為:

傳送命令

命令佇列

命令執行

返回結果

慢查詢只統計步驟3的時間,所以沒有慢查詢不代表客戶端沒有超時問題。

slowlog-log-slower-than:預設閥值,它的單位是微秒(1秒=1000毫秒,1毫秒=1000微秒),預設值是10000,假如執行了乙個「很慢」的命令,如 「keys  * 」;如果它超過了10000微秒,那麼它將會被記錄在慢查詢日誌裡。

注:如果 slowlog-log-slower-than=0 會記錄所有的命令

如果 slowlog-log-slower-than<0對於任何命令都不會進行記錄。

slowlog-max-len:慢查詢日誌最多儲存的條數。redis使用乙個列表來儲存慢查詢日誌,slowlog-max-len就是列表的最大長度,當列表已經處於最大長度時,繼續新增乙個慢查詢日誌時,會將最早插入的乙個命令從列表中移除。

修改配置檔案

使用config set 命令動態修改

config set slowlog-log-slower-than 20000

config  set slowlog-max-len 1000

config  rewrite  //如果需要將上面兩個命令持久化本地配置檔案中,需要執行此命令:config rewrite

127.0.0.1:6379> config set slowlog-log-slower-than 0

ok127.0.0.1:6379>

slowlog get [n]

n可以指定條數。不指定n則獲取所有慢查詢。

127.0.0.1:6379> slowlog get

1) 1) (integer) 1

2) (integer) 1535422960

3) (integer) 37

4) 1) "keys"

2) "*"

5) "127.0.0.1:51326"

6) ""

2) 1) (integer) 0

2) (integer) 1535422957

3) (integer) 430

4) 1) "config"

2) "set"

3) "slowlog-log-slower-than"

4) "0"

5) "127.0.0.1:51326"

6) ""

127.0.0.1:6379>

每個慢查詢由四個屬性組成

慢查詢的標識id

發生時間戳

命令耗時

執行的命令和引數

slowlog len

127.0.0.1:6379> slowlog len

(integer) 3

127.0.0.1:6379>

slowlog reset

127.0.0.1:6379> slowlog reset

ok

慢查詢可以有效的幫助我們找到redis的瓶頸,實際使用中:

1、slowlog-max-len配置建議:線上建議調大慢查詢列表,記錄慢查詢redis會對長命令進行截斷操作,所以不會占用大量記憶體,增大列表長度可以減小慢查詢被佇列塞滿而剔除的可能行,如線上設定1000以上

2、slowlog-log-slower-than配置建議:預設值超過10毫秒判斷為慢查詢,需要根據redis併發量調整該值,由於redis採用單執行緒響應命令,對於高流量場景,如果命令執行時間在1毫秒以上,那麼redis最多可支撐ops(operations運營操作)不到1000;因此對於高ops場景的redis建議設定為1毫秒

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

4、由於慢查詢日誌是乙個先進先出的佇列,如果慢查詢比較多的情況下,會丟失最早的慢查詢命令,為了防止這種情況發生,可以定期執行slowlog get 命令將慢查詢持久化到其他儲存中(如mysql),可以製作視覺化介面進行查詢。(以後的部落格會介紹cachecloud提供的這樣的功能,直接可以使用)

Redis 慢查詢分析

慢查詢,大家可能已經接觸到了mysql的慢查詢。我們配置乙個時間,如果查詢時間超過了我們設定的時間,我們就認為這是乙個慢查詢.慢查詢引數配置 redis 通過 slowlog log slower than 和 slowlog max len 分別配置慢查詢的閾值,以及慢查詢記錄的日誌長度。slow...

Redis 慢查詢分析

慢查詢,顧名思義就是比較慢的查詢,但是究竟是 慢呢?首先,我們了解一下redis命令執行的整個過程 傳送命令 命令排隊 命令執行 返回結果 在慢查詢的定義中,統計比較慢的時間段指的是命令執行這個步驟。沒有慢查詢,並不表示客戶端沒有超時問題,有可能網路傳輸有延遲,也有可能排隊的命令比較多。因為redi...

redis的慢查詢分析01

redis cli客戶端執行命令分為傳送命令 排隊 執行命令 返回結果 慢查詢只是統計執行命令的時間。慢查詢配置引數 slowlog log slower than 單位微妙,預設10000 slowlog max len 最多儲存多少條,預設128,慢查詢日誌是乙個先進先出的佇列 配置方式 修改配...