Redis 作者 antirez 開發了兩款輕量工具:redis-load(壓力測試)與 redis-stat(即時監控),原始碼託管於 GitHub。本文記錄下載、編譯與實戰操作步驟。
$ git clone https://github.com/antirez/redis-tools.git $ cd redis-tools $ make all
編譯產出 redis-load 與 redis-stat 二進位檔。
$ ./redis-load help Usage: redis-load ... options ...
$ ./redis-load host 127.0.0.1 port 6379 PRNG seed is: 3312712080 - use the 'seed' option to reproduce the same sequence ====== Report ====== 10000 requests in 0.367 seconds 27247.96 requests per second 50 parallel clients payload: 1..64 bytes keep alive: 1 4.30% < 1 ms 79.07% < 2 ms 93.99% < 3 ms 98.53% < 4 ms 99.02% < 5 ms 99.24% < 6 ms 99.45% < 8 ms 99.50% < 9 ms 99.54% < 16 ms 99.58% < 17 ms 99.63% < 18 ms 99.66% < 19 ms 99.72% < 20 ms 99.78% < 21 ms 99.84% < 22 ms 99.90% < 23 ms 99.93% < 24 ms 99.95% < 25 ms 100.00% < 26 ms
關鍵指標:QPS(requests per second)、延遲分位數、並發客戶端數。可透過 clients、requests、payload 等參數調整負載強度。
$ ./redis-stat help Usage: redis-stat... options ... Statistic types: overview (default) 一般資訊 vmstat Redis VM 活動資訊 vmpage 推測最佳 vm-page-size ondisk-size 磁碟值長度統計與圖表 latency 測量 Redis 伺服器延遲
| 參數 | 說明 | 預設值 |
|---|---|---|
host | 伺服器主機名 | 127.0.0.1 |
port | 伺服器埠號 | 6379 |
delay | 請求間隔毫秒數 | 1000 ms |
samplesize | vmpage 取樣鍵數 | - |
logscale | 圖表用 2 的冪對數刻度 | - |
$ ./redis-stat host 127.0.0.1 port 6379 ------- data ------ --------------------- load -------------------- - child - keys mem clients blocked requests connections 29602 3.45M 1 0 30090 (+0) 157 29602 3.45M 1 0 30091 (+1) 157 29602 3.45M 1 0 30092 (+1) 157 ... (每秒刷新)
欄位:鍵數、記憶體、客戶端、阻塞客戶端、請求數(增量)、連線數。
$ ./redis-stat latency host 127.0.0.1 port 6379 1: 0.23 ms 2: 0.67 ms 3: 0.21 ms 4: 0.23 ms 5: 0.23 ms 6: 0.16 ms 7: 0.37 ms ... (每筆命令延遲)
可快速發現延遲尖峰,定位 GC、大鍵刪除、AOF 重寫等原因。
seed 參數可重現相同隨機序列,利於回歸比較。