【发布时间】:2020-12-16 08:42:50
【问题描述】:
我有一个 RDS 实例(db.t2.micro - 1 个 vCPU,1GiB RAM),我通过连接尝试在短时间内模拟数据库上的高负载,并且一直在访问数据库无论数据库实例类如何,连接限制约为 100(我尝试过 db.t2.large - 4 vCPU,16GiB RAM),将“max_connections”参数设置为自定义参数组的一部分并使用RDS proxy用于连接池。
我确实注意到,当我增加数据库实例类时,下面的数据库连接图上的红线消失了,这看起来应该有更多连接可用,但从图中可以看出,连接限制相当固定在 ~100
我已经阅读了人们将数据库连接到 000 和 0000 的线程,即使如此我确信我在配置方面遗漏了一些东西,有什么想法吗?
编辑:如果使用 JDBC 库,我可以超过约 100 个连接,但是当我使用模仿我们的生产系统时,这是一个在 AWS ECS 上作为服务运行的 REST API,我最多可以使用~100,带有 http 500 错误
CloudWatch 日志指示“超出速率”。 REST API 是使用 Microsoft.NET.Sdk.Web 构建的。在我的用例中,服务器需要能够每 15 分钟每秒处理约 500 个 API 请求。
【问题讨论】:
-
您能否提供更多有关您的 RDS(postgresql 版本?)的确切设置的详细信息。我试图复制他的问题,但仅使用默认设置和 db.t2.medium 我很容易获得 200 到 400 个测试连接,如我的screenshot 所示。
-
肯定 postgres 端没有这样的限制。我认为问题出在您的客户身上。您的客户本身并没有提出建立更多连接的请求。
-
@Marcin 感谢您的 cmets,我已经用进一步测试的结果更新了原始问题,您是对的,看起来 RDS 方面还可以
-
@DeepakSinghal,是的,看起来是这样,我不知道 REST API 或 ECS 端的瓶颈可能在哪里......有什么想法吗?
-
如果 REST API 是使用 API 网关实现的,网关可以选择设置throttling。也许阶段或方法级别的 API 将限制设置为 100?此外,如果 API 使用 lambda,则 lambda 也可以通过自己的设置限制为 100。
标签: postgresql amazon-web-services amazon-rds