作者信息:https://home.cnblogs.com/u/huangjiabobk

在运维工作中,如何判断Redis链接数是否达到上限.

方法一:INFO 命令(最直接)

kubectl exec -it reids -n middle -c redis-master -- redis-cli -a <密码> INFO clients

输出关键字段:

字段 含义
connected_clients 当前已连接客户端数
client_recent_max_input_buffer 最近最大输入缓冲区
blocked_clients 阻塞中的客户端数

然后对比上限:

kubectl exec -it reids -n middle -c redis-master -- redis-cli -a <密码> CONFIG GET maxclients

默认 maxclients 为 10000,实际可用连接数 = maxclients - 32(Redis 内部保留 32 个预留连接)。

判断标准connected_clients >= maxclients - 32 就是达到上限。

方法二:一条命令同时取当前连接数和上限

kubectl exec -it reids -n middle -c redis-master -- redis-cli -a <密码> INFO clients | grep connected_clients
kubectl exec -it reids -n middle -c redis-master -- redis-cli -a <密码> CONFIG GET maxclients

方法三:查看具体连接来源(排查谁占用了连接)

kubectl exec -it reids -n middle -c redis-master -- redis-cli -a <密码> CLIENT LIST

输出每行一个客户端,包含 addr(来源 IP:Port)、age(连接存活秒数)、idle(空闲秒数)、cmd(最近执行命令)等。可以用 | wc -l 统计总数,按来源 IP 排序找出占用最多的客户端。

如果不确定容器名或有没有密码,可以先探查:

# 查看 pod 内容器列表
kubectl get pod reids -n middle -o jsonpath='{.spec.containers[*].name}'

# 无密码版(如果 Redis 没设密码)
kubectl exec -it reids -n middle -c redis-master -- redis-cli INFO clients

注意:如果 Redis 设了密码,命令中 -a 后面跟密码;如果不确定密码,可以查 StatefulSet 的环境变量或 Secret:

kubectl get statefulset shilian-redis-master -n middle -o yaml | grep -i -A2 password
posted @ 2026-08-25 14:48  黄嘉波  阅读(9)  评论(0)    收藏  举报
版权声明:原创作品,谢绝转载!否则将追究法律责任。--作者 黄嘉波