Redis连接数如何限制
小樊
34
2025-12-20 11:29:17
Redis连接数限制与最佳实践
一 核心参数与生效方式
- 设置服务器允许的最大客户端数:在配置文件 redis.conf 中配置 maxclients,或通过命令 CONFIG SET maxclients N 动态修改;也可在启动命令中指定 –maxclients N。达到上限后,Redis 会拒绝新的客户端连接。示例:
- 配置文件:maxclients 10000
- 运行时:CONFIG SET maxclients 5000
- 启动参数:redis-server --maxclients 50000 -f /etc/redis.conf
- 回收空闲连接:设置 timeout(单位秒),当客户端在指定时间内无命令交互将被服务器主动关闭,有助于释放闲置连接。示例:CONFIG SET timeout 600。
- 查看状态与连接:使用 INFO clients 查看当前连接数(如 connected_clients),使用 CONFIG GET maxclients 查看上限;使用 CLIENT LIST 列出连接,CLIENT KILL ip:port|id 关闭异常或闲置连接。
二 集群环境的注意事项
- 在 Redis Cluster 中,每个实例的 maxclients 需要同时覆盖“外部客户端连接”和“集群内部连接”。内部连接数约为 (节点数-1) × 2(每个节点与集群总线端口建立双向连接,总线端口通常为 baseport + 10000)。当外部连接 + 内部连接 > maxclients 时,新连接会被拒绝,并可能出现错误提示如 “max number of clients + cluster connections reached”。规划容量时需为内部连接预留空间。
三 客户端与服务端配合的连接治理
- 在服务端设置 timeout 清理长时间空闲连接,减少无效占用。
- 在客户端/连接池侧合理配置最大连接数与超时,避免连接风暴与泄漏。例如 JedisPoolConfig 可设置 setMaxTotal(最大连接数)、setMaxIdle、setMinIdle 等参数,并结合监控(如 getNumActive / getNumIdle / getNumWaiters)持续调优。
四 快速操作清单
- 查看当前连接与上限:
- redis-cli info clients
- redis-cli config get maxclients
- 调整上限(运行时,重启后失效):
- redis-cli config set maxclients 5000
- 持久化调整(编辑配置文件并重启):
- echo “maxclients 5000” >> /etc/redis/redis.conf
- systemctl restart redis
- 清理异常/闲置连接:
- redis-cli CLIENT LIST(定位)
- redis-cli CLIENT KILL ip:port|id(处理)
- 设置空闲超时(秒):
- redis-cli config set timeout 600