作者
马文斌
时间
2023-12-12
标签
redis 连接风暴 连接数占满
背景
近期有redis 数据库连不上,起初以为是redis的连接数满了,排查到后面发现问题不简单啊,下面看看具体的排查过程。


连不上的原有有哪些
-
密码不对
-
网络不好,丢包
-
原来的连接没有释放
-
程序有bug,一直循环创建连接
-
连接数已达上限,新连接挤不进去
-
…
查目前连接数
查redis的目前连接数
127.0.0.1:6379> info clients
# Clients
connected_clients:9993
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:1
查redis哨兵的连接数
redis-cli -h 192.168.63.114 -a xxxx -p 26579 CLIENT LIST |grep -c addr
9994
redis 默认最大连接数是1w个,那基本达到阈值
设置timeout
config set timeout 900
为了防止连接数不释放,设置timeout=900 秒,但是经过观察,连接数还是一直占满
统计ip来源
统计端口的来源ip:
ss -tnp | grep 26579 | awk ‘{print $5}’ | awk -F : ‘{print $1}’ | sort | uniq -c | sort -nr
统计出 192.168.1.1 9900
总结
统计出192.168.1.1 这个客户端的连接有9900个,居然占了99.9%的连接数,那基本定位是这个ip的客户端有问题了,找开发查这个ip的客户端配置,原来是程序有bug,一直循环创建连接。所以最后的问题点不是网络原因,也不是连接数不够,而是程序无限死循环的创建连接,最终把连接数占满。
作者公众号

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




