如何限制连接到 Redis 企业版数据库的数量?
上次更新 2024 年 4 月 18 日
问题
如何限制客户端连接到 Redis 企业版数据库的数量?
回答
可以在 Redis 企业版集群的两个层级限制连接。
客户端到端点连接限制
可以更改 DMC 和应用程序之间的连接数量,但 Redis 通常不建议这样做。限制客户端对端点的连接可能会导致潜在的副作用。例如,如果目标是将 5 节点集群中的数据库的总连接数限制为 17,500,该集群配置了 all-nodes 代理策略,则必须将每个 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 会给分片带来开销。