【问题标题】:Is there a way to increase DB connection time for an AWS RDS during a large SQL query?有没有办法在大型 SQL 查询期间增加 AWS RDS 的数据库连接时间?
【发布时间】:2021-01-04 21:36:45
【问题描述】:

当我第一次设置我的 Postgresql 数据库时,我能够运行一个大约需要 5 分 30 秒才能完成的大型查询。我将我的 AWS RDS 实例切换到较低层以查看性能差异是什么,但查询不成功,因此我将其切换回我选择的原始实例。但是,即使现在实例返回到原始 AWS 层,查询仍然无法正常工作。查看 AWS CloudWatch 监控中的实例,似乎数据库连接仅保持活动状态 5 分钟。有没有办法延长这个时间?

我正在使用 DBeaver、AWS RDS 和 Postgresql。

【问题讨论】:

    标签: postgresql amazon-rds dbeaver


    【解决方案1】:

    您可以在 RDS Parameter Group 中增加“tcp_keepalives_ilde”,设置在 30 - 60 秒之间即可。根据Postgres Documentation指定 TCP 应该向客户端发送 keepalive 消息的不活动秒数

    根据here,不建议在您的场景中设置 statement_timeout。默认值为 0,值为零(默认值)禁用超时

    在AWS RDS中,“tcp_keepalives_idle”是一个动态参数,表示应用后立即生效,无需重启实例。 AWS 文档中的实际措辞如下:“当您更改动态参数并保存数据库参数组时,无论立即应用设置如何,都会立即应用更改

    为了其他方便,可以参考AWS Documentation创建新参数组,然后返回RDS修改RDS实例使用新创建的参数组。

    【讨论】:

      【解决方案2】:

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

      转到 Amazon RDS > 参数组 > 创建 Postgres 参数组 > 选择新参数组 > 单击编辑参数 > 过滤“alive” > 将 tcp_keepalives_idle 设置为 60 > 保存。我还过滤了“超时”并将 statement_timeout 设置为 3600000,尽管这可能是不必要的。

      然后修改您的数据库并将新参数组应用到它。您可能需要重启实例才能应用。

      【讨论】:

        猜你喜欢
        • 2020-07-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-11-28
        • 1970-01-01
        • 2012-11-15
        • 1970-01-01
        • 2021-07-03
        相关资源
        最近更新 更多