如何限制 Redis Enterprise 数据库的连接数?
最后更新于 2024 年 4 月 18 日
问题
如何限制到 Redis Enterprise 数据库的客户端连接数?
回答
可以在 Redis Enterprise 集群的两个层面限制连接数。
客户端到端点的连接限制
更改 DMC 和应用程序之间的连接数是可能的,但 Redis 通常不建议这样做。 限制客户端到端点的连接可能会导致一些副作用。例如,如果目标是在一个使用 all-nodes 代理策略配置的 5 节点集群中,将数据库的总连接数限制为 17,500,则需要将每个 DMC 代理配置为 2,500(通过设置 max-connections)。如果集群丢失一个节点,集群将仅接受 15,000 个连接。然而,主要的顾虑是当由于流量不均衡导致每个端点的连接数超过 2,500 时,这会引起超时。无论如何,要限制特定 DB 端点的连接,请对每个 DB 运行以下命令,其中 N 是每个端点允许的最大连接数,并且必须是正整数。
rladmin tune db db:<ID> max-connections N
此设置是针对每个端点的。如果为 DB 配置了多个端点(使用 all-nodes 或 all-master-shards 代理策略),则每个端点都将允许接受 N 个连接。这一点需要牢记。N 的默认值为零 (0),表示无限制。
端点到分片的连接限制
限制 DMC 和分片之间的连接数是可能的。要为特定 DB 的分片启用更大数量的连接(其中 N 是您希望为每个分片设置的最大连接数,且不能为零),请对每个特定 DB 运行以下命令:
rladmin tune db db:<ID> maxclients N
maxclients
的默认设置为 10000。
详细信息
- 由于每次打开新连接都会产生开销,我们不建议从客户端显式关闭连接。相反,我们建议使用连接池。
- 对于像 SUBSCRIBE 这样的命令,代理会打开一个到分片的专用连接,而不是使用连接池中的连接,这与其他命令不同。因此,过度使用 SUBSCRIBE 会对分片产生开销。