gpt4 book ai didi

postgresql - 如何在 Amazon RDS 中关闭与 Postgres 数据库的空闲连接

转载 作者:行者123 更新时间:2023-11-29 11:42:31 26 4
gpt4 key购买 nike

我们在 RDS 中设置了一个 Postgres 数据库。我编写了一些 API 来使用 Spring Boot 处理对数据库的数据摄取。最近我发现很多连接在调用 API 后保持 session 处于事件状态。有些 session 可以追溯到 3 个月前。

我想知道是否有一种方法可以在一段时间不活动后自动关闭这些连接。来自 How to close idle connections in PostgreSQL automatically? ,看起来我可以设置一个 cron 作业来查找与 SQL 查询的死连接,并使用 pg_trminate_backend 终止它们。这是最好的选择吗? Web应用层有什么可以做的吗?或者可能是一些 RDS 参数?在这方面需要一些建议。

最佳答案

从 9.6 开始,您有:

https://www.postgresql.org/docs/current/static/runtime-config-client.html

idle_in_transaction_session_timeout (integer)

Terminate any session with an open transaction that has been idle for longer than the specified duration in milliseconds. This allows any locks held by that session to be released and the connection slot to be reused; it also allows tuples visible only to this transaction to be vacuumed. See Section 24.1 for more details about this.

The default value of 0 disables this feature.

(格式化我的)

9.6 之前- 是的,唯一的原生方式 - 使用 SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE now()-state_change > '5 minute'::interval 的 cron。

还有如果你使用pgbouncer的连接池,那么:

https://pgbouncer.github.io/config.html

server_idle_timeout If a server connection has been idle more than this many seconds it will be dropped. If 0 then timeout is disabled. [seconds]

Default: 600.0

(格式化我的)

关于postgresql - 如何在 Amazon RDS 中关闭与 Postgres 数据库的空闲连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48218521/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com