redis阻塞
1內在原因
1.1API或數據結構使用不合理(慢查詢,大對象)
1.2.CPU飽和 redis-cli --stat 獲取當前使用情況 +為每秒處理請求

redis處理命令只能用一個CPU,如果OPS幾百或幾千REDIS接近CPU飽和,可能是采用了高算法復雜度的命令,或者過度內存優化
1.3.持久化相關阻塞
FORK阻塞,AOF刷盤阻塞,hugepage阻塞(詳見持久化)
2外在因素
2.1CPU競爭 1.與其他CPU密集型應用進程競爭,2綁定CPU導致重寫子進程與父進程CPU競爭
2.2內存交換 (0,4K正常現象)
redis-cli -p 7013 info|grep process_id
cat /proc/66880/smaps|grep Swap

3網絡問題
3.1連接拒絕
3.11網絡閃斷(網絡割接或帶寬耗盡情況)
3.12REDIS連接拒絕(連接數超過maxclients)
3.13連接溢出
(1)進程限制(最大文件打開數ulimit -n 臨時設定)
(2)backlog隊列溢出
系統對於特定端口TCP連接采用了backlog隊列緩存,默認長度為511,通過tcp-backlog設定,如果REDIS用於高並發為了防止緩慢連接占用,可適當調大。linux系統默認為128
echo 511>/proc/sys/net/core/somaxconn
netstat -s|grep overflowed 統計因backlog隊列溢出導致的連接拒絕
3.2網絡延遲
3.3網卡軟中斷 top+1可以看到si就是軟中斷,出現再網絡高流量吞吐
