版权声明:如果觉得我的博客对你有帮助, 请点赞或评论! https://blog.csdn.net/zongf0504/article/details/88391680
总结生产开发环境, 常见的redis 异常。
1. 异常:ERR max number of clients reached
最近笔者的redis sentinel 集群突然报错说, 已到达最大连接数。笔者采用的redis 环境为sentinel 高可用集群, 问题表象为:
- java 应用通过jedis 连接抛出此异常
- 使用redis客户端连接哨兵,执行info命令,抛出异常
- 使用redis客户端连接redis服务, 执行info命令,正常执行
1.1 抛出异常
登录哨兵客户端,发现异常:
# redis-cli -h 127.0.0.1 -p 26481
127.0.0.1:26481> info
ERR max number of clients reached
登录redis 客户端发现正常:
127.0.0.1:26481> info clients
# Clients
connected_clients:6
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0
1.2 查看进程TCP连接数
- 通过netstat 命令可以看出哨兵连接数为4064个, 查看redis 配置文件中maxClient 的值也是4064. 所以确实达到了上限。
- 如果想看该进程具体有哪些终端在连, 则去掉 wc 命令即可。
# netstat -an | grep 26481 | wc -l
4064
1.3 解决方案
- 修改redis 配置文件, 将maxClients 的参数调整为40640
- 重启redis 服务和redis 哨兵服务即可