Redis SLOWLOG 指令教學

在管理時,會需要監控哪些對 Redis 的操作比較慢(久),就有點像是 database 的 profiler 概念,會記錄所有慢的操作。

特別注意:

  • SLOWLOG 僅紀錄實際執行的時間,不包含來回請求或等待執行的時間
  • SLOWLOG 都是存在快取內,因此對效能影響很些微,可以放心在線上使用

設定 SLOWLOG 記錄門檻

SLOWLOG 有一個毫秒的門檻,超過就會被列入 SLOWLOG(default: 10ms)。要修改的話可以直接改 redis.conf 或是使用 config 指令。

執行時間超過 100ms:

1
CONFIG SET slowlog-log-slower-than 100

SLOWLOG 紀錄數量

SLOWLOG 最多需要保留幾筆(default:10筆),超過的話會先擠掉最舊的(FIFO)。

設定最多保留100筆

1
CONFIG SET slowlog-max-len 100

SLOWLOG 指令

輸入 SLOWLOG HELP 基本上就是全貌了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
127.0.0.1:6379> SLOWLOG help
1) SLOWLOG <subcommand> [<arg> [value] [opt] ...]. Subcommands are:
2) GET [<count>]
3) Return top <count> entries from the slowlog (default: 10). Entries are
4) made of:
5) id, timestamp, time in microseconds, arguments array, client IP and port,
6) client name
7) LEN
8) Return the length of the slowlog.
9) RESET
10) Reset the slowlog.
11) HELP
12) Prints this help.
127.0.0.1:6379>

SLOWLOG GET

例如取得5筆 SLOWLOG GET

1
SLOWLOG GET 5

SLOWLOG 總共幾筆

1
SLOWLOG LEN

清除當前所有 SLOWLOG

例如取得5筆 SLOWLOG GET

1
SLOWLOG RESET

SLOWLOG 內容

1
2
3
4
5
6
7
8
9
10
11
8) 1) (integer) 8           // unique編號
2) (integer) 1623729837 // 執行時間點(unix timestampp)
3) (integer) 61243 // 執行時間(ms)
4) 1) "EVALSHA" // 以下為執行指令與內容,依照你的指令不同
2) "4c421975a19af6c179d7486b62a57b710d610843"
3) "1"
4) "7228"
5) "OMIT_CONTENT"
6) "86400"
5) "192.168.0.1:12345" // Client IP,Port
6) "ReSharperTestRunner64_40ed1ab3123ce235d64d0fef144a1bc28b423cc5" // Client name
  • 作者: MingYi Chou
  • 版權聲明: 轉載不用問,但請註明出處!本網誌均採用 BY-NC-SA 許可協議。