v2-.jpg

在redis-cli命令行使用:info clients可以查看当前的redis连接数。

config get maxclients 可以查询redis允许的最大连接数。
redis服务器默认设置的最大连接数maxclients是10000,但是受服务器最大文件数影响,服务器默认最大文件数是1024,所以redis最大连接也为1024-32=992

用client list 指令 查看客户端连接情况
其中idle:以秒计算的空闲时长
config get timeout 查看redis的配置timeout (当客户端闲置多长时间后关闭连接,如果指定为0,表示关闭该功能)

代码里最好也要释放连接资源 redis.close();

正常情况下已经关闭客户端但没释放的ESTABLISHED off连接是清理不掉的,只能杀掉对应redis端口,数据会丢失
CLIENT KILL 命令来杀死指定的连接了,所以可以通过CLIENT KILL来杀掉没用但无法释放的tcp连接,处理掉redis连接数过多无法连接的问题。

当连接为TIME-WAIT时,系统层面控制:
执行命令修改如下2个内核参数 sysctl -w net.ipv4.tcp_timestamps=1 开启对于TCP时间戳的支持,若该项设置为0,则下面一项设置不起作用sysctl -w net.ipv4.tcp_tw_recycle=1 表示开启TCP连接中TIME-WAIT sockets的快速回收

3 对 “redis连接数过多问题”的想法;

  1. redis-cli client list |awk ‘{print $2}’ | cut -d = -f 2| cut -d : -f 1 | sort | uniq -c | sort -rn

回复 admin 取消回复

您的电子邮箱地址不会被公开。 必填项已用*标注

Captcha Code