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

Transactions 在pg_活动中使用“显示事务隔离级别”获取多个查询,transactions,postgresql-9.2,Transactions,Postgresql 9.2,我正在使用postgres db server进行生产使用 当我在postgresql server上启动查询select*from pg_stat_活动时, 所以我得到了98%的查询,比如showtransactionisolationlevel,我的postgresqlserver只接受100个连接。 我的服务器也被卡住了。 因此,我无法继续下去 任何人都知道为什么会发生这种情况,有没有办法阻止所有的查询。 或者为什么这个查询会创建这么多的连接?在您的描述中甚至没有足够的信息来解决这个问题,

我正在使用postgres db server进行生产使用

当我在postgresql server上启动查询select*from pg_stat_活动时, 所以我得到了98%的查询,比如showtransactionisolationlevel,我的postgresqlserver只接受100个连接。 我的服务器也被卡住了。 因此,我无法继续下去

任何人都知道为什么会发生这种情况,有没有办法阻止所有的查询。
或者为什么这个查询会创建这么多的连接?

在您的描述中甚至没有足够的信息来解决这个问题,所以下面是一般的故障排除建议

首先查看pg_stat_活动中的其他信息。应用程序名称是什么?涉及哪些IP地址?简言之,这些疑问来自哪里? 如果你缺乏人际关系,问题是为什么你得到这么多,为什么他们做的工作这么少。这涉及到对客户端软件而不是服务器本身进行故障排除。同样值得一问的是,查询在事务中是活动的、空闲的还是空闲的,如果它们只是空闲的,为什么它们没有断开连接(如果这是一个限制)。 话虽如此,我猜这些都来自于客户端软件用来连接的db框架。我的猜测是,与大量做无用事情的查询相比,您更有可能出现数据库连接泄漏。

当您的连接池打开连接时,很可能会调用事务隔离级别

您是否尝试过减小连接池大小,尝试将其设置为1,然后看看,您可能会对发生的情况有更好的了解

今天我遇到了一个类似的问题,就是我如何找到这篇文章的,我发现最大连接数只发生在我的测试环境中,原因是我的测试框架ScalaTest似乎在ORM中为每个测试用例实例化数据库对象

比如我的博士后

最大连接数=100 连接池=100 它应该是好的,如果只有1个应用程序连接到数据库,但是在测试中,连接池被实例化的数量和我的测试用例一样多,因此它很容易达到最大值