我有一个Postgres 9.5数据库,用于基于web的Java应用程序.有时,由于长时间运行的查询,会话数突然激增,这些会话不会立即清除.当我判断pg_stat_activity时,查询列显示提交或回滚,其中有一个空闲阶段.这会导致Postgres达到max_连接的高阈值,这可能会导致生产中断.

查询|回滚

查询|提交

  1. 这些提交/回滚空闲会话是什么?
  2. 如何立即清除这些空闲会话?
  3. 如何减少创建这些空闲会话的数量?

谢谢

推荐答案

这些连接正在等待另一个查询.他们什么都没做.这就是他们无所事事的原因.

你的应用程序使用连接池,以避免随时断开和重新连接.当它的连接比活动查询多时,一些连接将处于空闲状态,并且显示的查询将是最后一个完成的查询.

这一切都很正常,没什么好担心的.你不需要改变或修复任何东西.

Postgresql相关问答推荐

Keycloak和PostgreSQL

在同一 Select 列表中两次使用jsonb_arrayElements()是否安全?

Select 二维数组中的特定元素PostgreSQL

复合索引列的顺序导致不同的计划

为什么32632投影中的几何图形并不完美?

即使不对订阅服务器进行任何修改,Postgres逻辑复制也可能发生冲突吗?

Postgres从spark触发post-write

如何获得一起满足数量要求的物品? (WHILE 循环还是 CTE?)postgresql

是否可以短时间运行 VACUUM FULL 并获得一些好处?

使用间隔参数的 go postgres 准备好的语句不起作用

推送到 Heroku 时出现带有 Postgres 的 Rails 迁移错误

如何在可选参数上查询 postgres?

查询仅属于特定部门的用户

为 Django Postgres 连接强制 SSL

理解 Postgres 行大小

从 PostgreSQL 序列中 Select 多个 id

Django 1.9.2 AssertionError:database connection isn't set to UTC

使用 Postgresql 在过滤器中制作 Sqlalchemy 使用日期

如何为 adminpack 解决 PostgreSQL pgAdmin 错误Server instrumentation not installed?

性能调优:为布尔列创建索引