Nodejs 中 max、poolSize、idle_in_transaction_session_timeout、idle_session_timeout 的推荐值

问题描述 投票:0回答:1

我正在使用 PostgreSQL 数据库(AWS RDS)。在nodeJs中,我使用“pg”来查询。所以我设置了池。 根据我的研究,我给出了以下值: https://www.npmjs.com/package/pg

    const { Pool } = require('pg');

    // create the pg pool
    const pool = new Pool({
      host: process.env.HOST,
      user: process.env.USER,
      password: process.env.PASSWORD,
      database: process.env.DB,
      port: process.env.PORT,
      max: 200,
      types: types,
      poolSize: 200,
      idle_in_transaction_session_timeout: 600000,
      idle_session_timeout: 3600000,
      idleTimeoutMillis: 300000, // close idle clients after 1 second
      connectionTimeoutMillis: 300000, // return an error after 1 second if connection could not be established
      maxUses: 7500
   });

您能否推荐 max、poolSize、idle_in_transaction_session_timeout、idle_session_timeout、idleTimeoutMillis、connectionTimeoutMillis、maxUses 的值。

node.js postgresql amazon-web-services amazon-rds serverless
1个回答
0
投票

记住:没有一刀切的配置。最佳值取决于您的特定应用程序和数据库环境。考虑以下因素和准则来得出要配置的所需值。

要考虑的关键因素:

  • 应用程序使用模式:
    • 平均和峰值连接要求
    • 典型查询持续时间和交易长度
    • 连接打开和关闭的频率
  • 数据库服务器资源:
    • 可用内存和CPU容量
    • 网络带宽和延迟
  • 绩效目标:
    • 期望的响应时间和吞吐量
    • 连接延迟或错误的容忍度
  • 安全考虑:
    • 连接泄漏或未经授权访问的风险

一般准则:

  • max
    :考虑数据库服务器资源和性能目标,设置为应用程序可能需要的最大并发连接数。
  • poolSize
    :设置为平衡连接可用性与内存使用量的值,通常匹配或略低于最大值。
  • idle_in_transaction_session_timeout
    :设置为适中的值(例如 600000 毫秒或 10 分钟),以防止长时间运行的事务无限期地保持连接。
  • idle_session_timeout
    :设置较短的值(例如 300000 毫秒或 5 分钟)以更快地释放空闲连接。
  • idleTimeoutMillis
    :设置为与应用程序的连接使用模式和空闲超时一致的值。
  • connectionTimeoutMillis
    :考虑到网络延迟,设置为反映可接受的连接建立时间的值。
  • maxUses
    :设置为平衡连接重用与潜在错误处理的值(例如,大多数情况下为 7500 或更高)。

微调:

  • 监控池使用情况并根据需要调整值以优化性能和资源利用率。
  • 考虑使用 pgBouncer 等工具来实现高级连接池功能和负载平衡。
  • 如果您需要更多量身定制的建议,请向经验丰富的数据库管理员或 PostgreSQL 专家寻求指导。
© www.soinside.com 2019 - 2024. All rights reserved.