一、起因
有个兄弟询问一套redis分片集群的连接数信息
redis集群信息
# KS redis组名:
redis-cluster-order-link-status-ks (dmp3中)
# KS 的ip:
172.25.161.36:6379
172.25.161.35:6379
172.25.161.34:6379
172.25.161.33:6379
172.25.161.32:6379
172.25.161.31:6379
# WG redis组名:(没问题)
IP:
172.21.42.134:6379
172.21.42.133:6379
172.21.42.132:6379
172.21.42.131:6379
172.21.42.130:6379
172.21.42.129:6379
二、信息搜集
-
连接数信息
-
redis进程的limit文件信息
-
sysctl信息
-
limits.conf文件
三、分析
公司redis最大连接数默认设置为1万。
问题的redis集群,最大连接数为4064。
当redis出现连接数使用率过高问题时,首先查看监控连接数是否真的连接数过高。若连接数为4000左右,则需做如下处理。
四、操作
-
检查redis的confi文件
cat /data/redis/cluster/conf/6379/redis.conf |grep maxclients
默认10k
-
检查redis操作系统文件最大打开数配置位置是否正确,一般都是这个原因。(全部修改完成后)
错误信息
修改参数 LimitNOFILE = 65535 需要在 [Service]下方
修改操作:
#
systemctl edit --full redis_6379
LimitNOFILE = 65535修改至[Service]下方
修改完成后:
-
dmp上先重启从库,然后主备切换,再重启新从库。
五、补充
-
切换主从后,从节点反复异常,CPU使用率高
先查看redis参数:config get client-output-buffer-limit
将这个参数在主库上进行更改:
config set client-output-buffer-limit 'slave 0 0 0'
config rewrite
2. ## 参考
http://172.20.171.9:8090/pages/viewpage.action?pageId=2195595
-
批量修改redis连接数
redis-cli -h 172.25.108.89 config set client-output-buffer-limit "slave 0 0 0"
redis-cli -h 172.25.108.90 config set client-output-buffer-limit "slave 0 0 0"
redis-cli -h 172.25.108.91 config set client-output-buffer-limit "slave 0 0 0"
redis-cli -h 172.25.108.92 config set client-output-buffer-limit "slave 0 0 0"
redis-cli -h 172.25.108.93 config set client-output-buffer-limit "slave 0 0 0"
redis-cli -h 172.25.108.94 config set client-output-buffer-limit "slave 0 0 0"
# set
redis-cli -h 172.25.161.36 -a "JDmDbBJXPB" config set client-output-buffer-limit "slave 0 0 0"
redis-cli -h 172.25.161.35 -a "JDmDbBJXPB" config set client-output-buffer-limit "slave 0 0 0"
redis-cli -h 172.25.161.34 -a "JDmDbBJXPB" config set client-output-buffer-limit "slave 0 0 0"
redis-cli -h 172.25.161.33 -a "JDmDbBJXPB" config set client-output-buffer-limit "slave 0 0 0"
redis-cli -h 172.25.161.32 -a "JDmDbBJXPB" config set client-output-buffer-limit "slave 0 0 0"
redis-cli -h 172.25.161.31 -a "JDmDbBJXPB" config set client-output-buffer-limit "slave 0 0 0"
config get client-output-buffer-limit
# get
redis-cli -h 172.25.161.36 -a "JDmDbBJXPB" config get client-output-buffer-limit
redis-cli -h 172.25.161.35 -a "JDmDbBJXPB" config get client-output-buffer-limit
redis-cli -h 172.25.161.34 -a "JDmDbBJXPB" config get client-output-buffer-limit
redis-cli -h 172.25.161.33 -a "JDmDbBJXPB" config get client-output-buffer-limit
redis-cli -h 172.25.161.32 -a "JDmDbBJXPB" config get client-output-buffer-limit
redis-cli -h 172.25.161.31 -a "JDmDbBJXPB" config get client-output-buffer-limit