【问题标题】:not able to connect postgresql after 30 connections30 次连接后无法连接 postgresql
【发布时间】:2016-03-30 12:33:14
【问题描述】:

我有 2 个 postgresql 云服务器,第一个工作正常,但在 30 分钟后第二个我无法从 java 应用程序连接。当我从 pgadmin 连接时,它显示 30 到 40 个连接,并且在终止这些连接后,一切运行顺利。 它的

配置: postgresql/9.3

max_connections = 100

shared_buffers = 4GB

当同一个应用程序连接到具有相同架构的其他 postgresql 时,一切永远都可以正常工作

配置: postgresql/9.1

max_connections = 100

shared_buffers = 32MB

你能帮我理解或解决问题吗

【问题讨论】:

  • 为什么你打开了 30-40 个连接?它们都来自您的应用程序吗?
  • 是的,所有都来自我的应用程序,但限制是 100,所以它不应该是问题
  • 为什么您的应用程序(我假设它是一个实例)打开了 40 个连接?无论哪种方式,您都可能以 root 身份使用 pgadmin 登录,如果您无法在应用中发现错误,请尝试使用与您的应用相同的用户使用 psql。
  • 我尝试使用应用程序、pgadmin 和其他工具连接到数据库。从应用程序注销后,我可以看到连接处于睡眠状态。它不应该终止吗?

标签: postgresql postgresql-9.1 postgresql-9.3


【解决方案1】:

我在一个具有数百个打开连接的 PostgreSQL 9.3 实例上工作。我同意你的观点,开放的连接本身不应该是一个问题。由于我们没有太多信息,以下是如何开始故障排除的说明。

  1. 检查服务器日志是否有任何错误。启动连接时操作系统级别可能存在问题?
  2. 尝试以应用程序用户身份使用 psql 登录。问题是否持续存在?如果不是,问题不在于 PostgreSQL。我会仔细查看 Java 代码,看看那里是否发生了什么事。
  3. 请注意,psql 和其他 libpq 操作可能无法为您提供全貌。在观看数据包捕获时尝试通过非 SSL 连接进行本地连接。在这种情况下,您可以找到(并查找)连接的 SQLSTATE 错误。这是因为,出于遗留和向后兼容性的原因,libpq 在连接到数据库时不会将 sqlstate 传递给客户端应用程序。

不过我敢打赌,这不是 postgresql 问题。可能是操作系统问题。可能是资源问题。这可能是客户端应用程序问题。

【讨论】:

    猜你喜欢
    • 2012-11-01
    • 2016-06-16
    • 2019-11-02
    • 2020-01-01
    • 2019-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多