温馨提示×

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(最大连接数)、setMaxIdlesetMinIdle 等参数,并结合监控(如 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

0