如何解决有没有办法在大型 SQL 查询期间增加 AWS RDS 的数据库连接时间?
当我第一次设置我的 Postgresql 数据库时,我能够运行一个大型查询,大约需要 5 分 30 秒才能完成。我将我的 AWS RDS 实例切换到较低的层以查看性能差异是什么,但查询不成功,因此我将其切换回我选择的原始实例。但是,即使实例返回到原始 AWS 层,查询仍然无法正常工作。查看 AWS CloudWatch 监控中的实例,似乎数据库连接仅保持活动状态 5 分钟。有没有办法延长这个时间?
我正在使用 DBeaver、AWS RDS 和 Postgresql。
解决方法
我似乎通过每 60 秒启用一个 TCP 保持连接参数来解决我的问题。
转至 Amazon RDS > 参数组 > 创建 Postgres 参数组 > 选择新参数组 > 单击编辑参数 > 筛选“活动”> 将 tcp_keepalives_idle 设置为 60 > 保存。我还过滤了“超时”并将 statement_timeout 设置为 3600000,尽管这可能是不必要的。
然后修改您的数据库并将新的参数组应用于它。您可能需要重启实例才能应用。
,您可以在 RDS 参数组中增加“tcp_keepalives_ilde”,将其设置在 30 - 60 秒之间即可。根据 Postgres Documentation,指定 TCP 应向客户端发送 keepalive 消息之前的非活动秒数。
根据here,不建议在您的方案中设置statement_timeout。默认情况下,该值为 0,值为零(默认值)禁用超时。
在 AWS RDS 中,“tcp_keepalives_idle”是一个动态参数,这意味着它会在应用后立即生效,无需重启实例。 AWS 文档中的实际措辞如下:“当您更改动态参数并保存数据库参数组时,无论“立即应用”设置如何,都会立即应用更改”
为了他人的利益,可以参考AWS Documentation创建新的参数组,然后回到RDS修改RDS实例使用新创建的参数组。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。