我正在使用 postgres 数据库服务器进行生产。
当我select * from pg_stat_activity
在我的 postgresql 服务器上发起查询时,我得到了 98% 的查询,"SHOW TRANSACTION ISOLATION LEVEL"
而我的 postgresql 服务器只接受 100 个连接。我的服务器卡住了。所以我无法继续进行。
任何人都知道为什么会发生这种情况,是否有任何想法阻止所有查询。或者为什么这个查询会创建这么多的连接?
我正在使用 postgres 数据库服务器进行生产。
当我select * from pg_stat_activity
在我的 postgresql 服务器上发起查询时,我得到了 98% 的查询,"SHOW TRANSACTION ISOLATION LEVEL"
而我的 postgresql 服务器只接受 100 个连接。我的服务器卡住了。所以我无法继续进行。
任何人都知道为什么会发生这种情况,是否有任何想法阻止所有查询。或者为什么这个查询会创建这么多的连接?
SHOW TRANSACTION ISOLATION LEVEL
当您的连接池打开连接时可能会调用
您是否尝试过减小连接池大小,尝试将其设置为1并查看,您可能会更好地了解正在发生的事情。
我今天刚遇到一个类似的问题,这就是我找到这篇文章的方式,我发现max connection reached
只发生在我的测试环境中,原因是我的测试框架(ScalaTest)似乎在 ORM 中为每个测试用例实例化了数据库对象。
例如我的 postgres 有
max_connections = 100
connection pool = 100
应该没问题,如果只有1个应用程序连接到数据库,但是在测试中,连接池实例化的数量与我的测试用例一样多,因此很容易达到最大值。
在您的描述中甚至没有足够的信息来开始解决此问题,因此以下是一般故障排除建议。
话虽如此,我的猜测是这些来自客户端软件用于连接的数据库框架。而且我的猜测是,您更可能有数据库连接泄漏,而不是许多查询做无用的事情。