有没有办法在进行大型SQL查询时增加AWS RDS的数据库连接时间?

3
当我第一次设置我的Postgresql数据库时,我能够运行一个大查询,大约需要5分30秒才能完成。我将我的AWS RDS实例切换到较低的层级,以查看性能差异,但查询失败了,所以我将其切换回我最初选择的原始实例。然而,即使现在实例已经回到原始的AWS层级,查询仍然无法工作。通过AWS CloudWatch监控查看实例,似乎DB连接只保持活动状态5分钟。有没有办法延长这个时间?
我正在使用DBeaver、AWS RDS和Postgresql。
2个回答

4
您可以在RDS参数组中增加“tcp_keepalives_ilde”,将其设置为30-60秒即可。根据Postgres文档指定TCP向客户端发送keepalive消息的不活动时间秒数
根据此处,在您的情况下设置statement_timeout不建议的。默认值为0,零(默认值)表示禁用超时
在AWS RDS中,“tcp_keepalives_idle”是一个动态参数,这意味着应用后立即生效,无需重新启动实例。AWS文档中的实际措辞如下:“当您更改动态参数并保存DB参数组时,无论是否设置立即应用,更改都会立即应用”。
为了让其他人受益,可以参考AWS文档创建新的参数组,然后返回RDS以修改RDS实例以使用新创建的参数组。

0

我似乎通过启用每60秒的TCP keepalive参数解决了我的问题。

前往Amazon RDS > 参数组 > 创建一个Postgres参数组 > 选择新的参数组 > 点击编辑参数 > 过滤“alive” > 将tcp_keepalives_idle设置为60 > 保存。我还过滤了“timeout”,并将statement_timeout设置为3600000,但这可能是不必要的。

然后修改您的数据库并将新的参数组应用于它。您可能需要重新启动实例才能使其生效。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接