在pg_activity中使用“显示事务隔离级别”获取多个查询


10

我将PostgreSQL服务器用于生产。

当我触发查询

select * from pg_stat_activity

在我的服务器上,我收到了98%的查询,例如

SHOW TRANSACTION ISOLATION LEVEL

并且我的服务器仅接受100个连接,因此我无法继续进行。

为什么会这样呢?如何阻止所有这些查询?


4
Postgres不会自行创建连接。创建这些连接并运行这些查询的是您的应用程序。可能是连接池或类似的东西。
a_horse_with_no_name 2013年

2
您正在运行Java应用程序吗?使用HikariCP还是其他连接池选项?我正在使用HikariCP,登录psql并执行操作时会看到类似的事情select query from pg_stat_activity;……我也想知道为什么会这样;我的猜测是,这是HikariCP保持连接“新鲜”的一种机制。
克里斯·W

Answers:


2

如果他们在那里;他们在那里,但是他们并没有像魔术般突然冒出来。虽然我希望您能回来告诉我们您的情况,但这通常是两件事之一,

  1. 连接池
  2. ORM或SQL抽象

有时,这些人联系并开始进行空交易,或准备交易。总是由于库错误造成的。库是数据库的新库还是新库,都是可以原谅的。如果图书馆已有多年历史,并且这样做的话,我会怀疑他们对图书馆没有太多的关注,而是在寻找替代方案。

从评论中

Postgres不会自行创建连接。创建这些连接并运行这些查询的是您的应用程序。可能是连接池或类似的东西。– a_horse_with_no_name 2013年9月10日9:03

您正在运行Java应用程序吗?使用HikariCP还是其他连接池选项?我使用HikariCP并登录psql并从pg_stat_activity中选择查询时看到了类似的情况; ...我也想知道为什么会这样;我的猜测是,这是HikariCP保持连接“新鲜”的一种机制。–克里斯·W(Chris W.)2013年1月16日19:22

虽然有可能尝试使连接保持“新鲜”,但这样做的原始方式是这样的

result = PQexec(imp_dbh->conn, "/* DBD::Pg ping test v3.6.0 */");

您可能要提交一个错误报告以改用该方法。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.