REDIS阻塞


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就是軟中斷,出現再網絡高流量吞吐

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM