【问题标题】:postgres connections exceeding max_connections?postgres连接超过max_connections?
【发布时间】:2010-09-03 17:39:28
【问题描述】:

我们正在运行一个连接密集、插入密集的 postgres 数据库(到了我们应该做一些连接池的地步,但现在没有时间了)。

在进行一些故障排除时,我使用 netstat 显示与 postgres 的连接数。我通常会看到超出我在 postgres.conf 文件中指定的内容(通过 max_connections)。

即使我将 max_connections 设置为 1000,我也会通过 netstat 看到 1400-1600 个连接。

有人知道发生了什么吗?这究竟是怎么发生的?

对此的任何见解都会很棒。

【问题讨论】:

    标签: postgresql port connection netstat


    【解决方案1】:

    这些连接是否可能已经关闭?例如,Windows 不会立即关闭连接,而是将其状态更改为“TIME_WAITING。

    所以连接显示在 netsat 中,但实际上是关闭的。

    只有那些显示为“ESTABLISHED”的才是“实时”连接。

    顺便说一句:您可以简单地在您的 PostgreSQL 服务器前面放置一个连接池,而无需更改您的应用程序。 pgPool(或 pgBouncer)将假装它们是应用程序的真正 PostgreSQL 服务器,并将“在其背后”进行池化

    【讨论】:

      【解决方案2】:

      使用连接池。超过 1000 个连接会显着降低数据库速度,即使对于 1000 个连接,您也需要一些具有大量内核和 RAM 的 $$$$$ 硬件。使用连接池效率更高。

      【讨论】:

      • 我知道。幸运的是,这是一款具有 32GB RAM、16 个内核和一些额外功能的服务器硬件。它将于下周投入生产,因此我们无法对代码进行任何大的更改。将不得不做一个版本更新。虽然吸取了我们的教训。问题是测试和要求最后发生了一些变化。以为我们将有大约 150 个连接。
      • 正如我已经写过的:使用 pgPool 或 pgBouncer,您无需更改代码中的任何内容即可使用连接池
      猜你喜欢
      • 2017-03-13
      • 2015-05-24
      • 2021-01-12
      • 1970-01-01
      • 1970-01-01
      • 2017-01-03
      • 1970-01-01
      • 1970-01-01
      • 2022-06-10
      相关资源
      最近更新 更多