redis-连接数占满解决

作者

马文斌

时间

2023-12-12

标签

redis 连接风暴 连接数占满

背景

近期有redis 数据库连不上,起初以为是redis的连接数满了,排查到后面发现问题不简单啊,下面看看具体的排查过程。

redis-连接数占满解决_第1张图片

连不上的原有有哪些

  1. 密码不对

  2. 网络不好,丢包

  3. 原来的连接没有释放

  4. 程序有bug,一直循环创建连接

  5. 连接数已达上限,新连接挤不进去

  6. .....

查目前连接数

查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,一直循环创建连接。所以最后的问题点不是网络原因,也不是连接数不够,而是程序无限死循环的创建连接,最终把连接数占满。

作者公众号:

redis-连接数占满解决_第2张图片

你可能感兴趣的:(redis,数据库,缓存)