redis连接数问题

44 阅读2分钟

一、起因

有个兄弟询问一套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



二、信息搜集

  1. 连接数信息

  1. redis进程的limit文件信息

  1. sysctl信息

  1. limits.conf文件




三、分析

公司redis最大连接数默认设置为1万。

问题的redis集群,最大连接数为4064。

当redis出现连接数使用率过高问题时,首先查看监控连接数是否真的连接数过高。若连接数为4000左右,则需做如下处理。




四、操作

  1. 检查redis的confi文件

cat /data/redis/cluster/conf/6379/redis.conf |grep maxclients

默认10k

  1. 检查redis操作系统文件最大打开数配置位置是否正确,一般都是这个原因。(全部修改完成后)

错误信息

修改参数 LimitNOFILE = 65535 需要在 [Service]下方

修改操作:

# 
systemctl edit --full redis_6379

LimitNOFILE = 65535修改至[Service]下方

修改完成后:

  1. dmp上先重启从库,然后主备切换,再重启新从库。




五、补充

  1. 切换主从后,从节点反复异常,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

  1. 批量修改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