【问题标题】:Node-Postgres Error: timeout exceeded when trying to connectNode-Postgres 错误:尝试连接时超时
【发布时间】:2022-07-08 22:58:12
【问题描述】:

我们有一个生产部署的 Node js 应用程序,它全天为大量流量提供服务。该应用程序处于环回状态,并像使用其 postgres 连接器一样连接到 postgres db。连接器利用 Node-Postgres 作为其 pg 客户端。我们通常将最大池大小保持为 50,最小池大小为 5。应用程序平均运行三个实例。

我们面临的问题是,应用程序有时无法建立数据库连接并出现错误 - 原因:错误:尝试连接时超时。我们尝试过调试,但发生这种情况时数据库上没有负载 - 没有 CPU 峰值,也没有内存利用率峰值。仅供参考,我们使用 AWS Postgres RDS。

我们保留了以下配置作为连接参数的一部分

    connector: 'postgresql',
    host: host,
    user: user,
    password: password,
    database: database,
    min: 5,
    max: 50,
    idleTimeoutMillis: 60000,
    query_timeout: 5000,
    connectionTimeoutMillis: 10000 

有人可以告诉我们为什么这种情况会如此频繁地发生。目前,这种情况每周发生一次。只有在应用程序重新启动后,我们才能解决它。这可能会释放池并终止空闲连接。但我们已经通过应用程序来实现了。

【问题讨论】:

  • 听起来你的应用程序正在泄漏连接。一旦池有 50 个,就不允许新的连接,并且最终会超时。发生这种情况时,您在 pg_stat_activity 中看到了什么?
  • 如果接下来发生这种情况,将与您一起更新调查结果@jjanes。我们正在检查 AWS RDS 性能洞察 - 顶级 sql/顶级主机/顶级等待/顶级会话。在这两个地方,我们都没有看到任何异常。根据您的建议,还将检查 pg_stat_activity。你能告诉我哪些是我应该感兴趣的参数吗?

标签: node.js postgresql node-postgres


【解决方案1】:

找到任何解决方案了吗?我也遇到了这个问题

【讨论】:

    猜你喜欢
    • 2023-04-09
    • 1970-01-01
    • 2019-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    • 2023-03-09
    相关资源
    最近更新 更多