一、 常見故障分析
1. 內存過高分析
- info 命令查看key總數是否大量增加,佔用內存是否大量增加
- redis-cli -h host -p port client list | grep -v "omem=0",查詢輸出緩衝區不爲0的客戶端連接,omem字段爲佔用的內存量(B),cmd字段爲命令,從client_longest_output_list看是否輸出緩衝區佔用內存較大,也就是有大量的數據從Redis服務器向某些客戶端輸出。參考 https://carlosfu.iteye.com/blog/2254571
2. CPU高分析
client list中後面有命令,具體的話就要看monitor(monitor消耗cpu也高,不能執行太久)。client list就是看執行那一時間點的,monitor就全些。
看都執行了什麼命令(看cmd=部分),有沒有消耗CPU的一些異常命令。一般引起CPU高都是一下子取很多值的,從之前的異常排查來看,還是getall,keys *這類的命令最消耗CPU
新建連接和每秒的操作數量增加也會CPU增加
3. 壓測時主要關注項
- 慢日誌:slowlog get
- ops數:info stats,查看 instantaneous_ops_per_sec 指標。一般可以支撐每秒6到8K,如果只有幾百幾十,說明操作很少,那一般就不是redis的問題
二、 常用命令
1. 啓停命令
Linux啓動
$redis-server $REDIS_DATA/conf/redis.conf
Windows啓動
$redis-server –-console
Windows && Linux停止
$redis-cli –p port –a passwd shutdown save
2. 實例管理
檢查連接情況
client list
庫中KEY的數量
info keyspace
檢查主從同步狀態,看master_link_status,slave_repl_offset與master_repl_offset
info replication
DB中鍵的數量
dbsize
切換數據庫(redis用數字作爲多個數據庫的實現,默認16個,編號爲0-15)
select db號
清除所有數據庫(高危)
flushall
清除當前數據庫(高危)
flushdb
3. 慢查詢
兩個參數
- slowlog-log-slower-than 10000 慢查詢捕獲閾值(默認10000微秒)
- slowlog-max-len 128 慢日誌最多存儲條數(默認128,超過後先進先出)
獲取慢日誌
- slowlog get [n] n指定條數
慢日誌格式
- 慢查詢日誌標識id
- 發生時間戳
- 命令耗時(微秒)
- 執行命令
- 命令參數
獲取慢日誌列表長度
- slowlog len
慢日誌重置
- slowlog reset
4. 配置管理
支持兩種修改配置方法:
- 改配置文件
- config set 動態修改,並將配置持久化到本地文件
-- 參數設置
config set slowlog-max-len 1000
-- 將配置持久化到本地文件
config rewrite
獲取配置信息
- CONFIG GET CONFIG_SETTING_NAME
獲取所有配置
- CONFIG GET *
5. 客戶端相關
列出連接到redis服務端的客戶端信息
- client list(執行較慢,連接數較多時頻繁執行可能阻塞redis)
- info clients(執行較快,不能精確定位到所有客戶端,只能顯示輸入緩衝區最大值)
設置客戶端名
- client setName xx
- client getName
殺掉指定IP地址和端口的客戶端
- client 127.0.0.1:52343