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