如何解决postgreSQL 在释放空闲连接之前会等待一段时间吗?
我正在使用 CKAN 2.7.2 (docker) 应用程序。我们已经设置:
max_connections = 200 (postgresql.conf)
在我的 psql 的 pg_stat_activity 表中,连接详细信息为 (select * from pg_stat_activity;
):
ckandb connections : total 80 connections where active - 51,idle - 20,idle_in_transaction - 09.
ckan_datastore con : total 24 connections where active - 04,idle - 19,idle_in_transaction - 01.
我们可以看到许多连接处于 Idle
状态。
这些 Idle
连接是可重用的(等待服务新请求)还是这些连接即将释放(等待释放)?
postgreSQL 是否需要一些时间来释放空闲连接?(我的意思是,如果存在一些空闲连接,那么 postgreSQL 在释放这些空闲连接之前会等待一段时间吗?)
-------------------------------------------- ---------编辑
我们正在使用带有 4 个 ckan_default 进程和 postgresql 数据库的 ckan 应用程序。
在我的 ckan 应用程序中,sqlalchemy 的 QueuePool 大小为 15(Pool_size - 5,max_overflow - 10),默认池大小为 5(pool_size=5)。所以 4 个 ckan_default 进程最多可以容纳 20 个连接(4 个进程 * 5 pool_size)。
当需要额外的连接时,它会在池中多获得 max_overflow=10
个连接(max_overflow=10*4 进程 = 40 个总连接)。但是在使用这些额外的连接(max_overflow=10)之后,这些连接应该立即从池中释放。如以下 sqlalchemy 的文档所示:
https://docs.sqlalchemy.org/en/14/core/pooling.html#sqlalchemy.pool.QueuePool.params.max_overflow
When those additional connections are returned to the pool,they are disconnected and discarded.`
请确认我的上述理解?
目前我的 ckan 数据库中有 39 个空闲连接:
select count(*) from pg_stat_activity where state='idle';
count
-------
39
(1 row)
肯定有一些空闲连接(至少 19-20)属于 max_overflow。为什么这些属于 max_overflow 的空闲连接没有释放?它应该按照上面给出的sqlalchemy的官方文件发布吗? 这些空闲连接会在特定(默认)时间后释放吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。