为什么 Amazon Aurora (Postgres) RDS 集群将所有传入连接连接到单个读取器实例?

问题描述 投票:0回答:1

我有一个 Aurora RDS 集群设置,其中包含三个读取器实例和一个写入器实例。集群有两个端点,一个“reader”只读端点和一个“writer”读写端点。

我使用“reader”端点打开一个具有 30 个连接的数据库池。我希望看到这 30 个连接均匀分布在三个读取器实例中。相反,似乎所有 30 个连接都连接到一个读取器实例,而其他两个读取器实例闲置。

在所附的屏幕截图中(顺便说一句,我删除了 ids),一个实例的容量就足够了,三个读取器实例是不必要的。但是这个应用程序确实遇到了突发的活动,我已经看到单个读取器实例被淹没,并且该应用程序似乎没有利用额外的读取器实例。

我的问题是为什么?为什么 Amazon Aurora 似乎没有使用甚至尝试使用额外的读取器实例?为什么 Amazon Aurora 将我的所有数据库连接连接到同一个读取器实例?

amazon-web-services amazon-rds amazon-aurora
1个回答
0
投票

来自 DNS 终端节点 - Amazon Aurora MySQL 数据库管理员手册

读取器端点 – 包括数据库集群中单个 DNS CNAME 下的所有 Aurora 副本。您可以使用读取器端点来实现基于 DNS 的实例 IP 地址随机分配给新的只读连接。

这意味着每次解析 DNS 名称时,DNS 名称都会解析为随机读取器。

由于您在短时间内从同一台计算机创建了 30 个连接,因此您的计算机可能使用了缓存的 DNS 响应,因此使用了同一个 Reader。

在正常情况下,当从不同计算机解析 DNS 名称或 DNS 响应缓存过期时,它将收到不同的 DNS 响应并连接到不同的 Reader。

© www.soinside.com 2019 - 2024. All rights reserved.