【发布时间】:2021-11-27 01:03:29
【问题描述】:
我有点卡在这里,希望能得到一些帮助。
我的节点应用程序有一个单独的模块,我在其中连接到 postgres 并按原样导出池
const {Pool,Client} = require('pg');
const pool = new Pool({
user: process.env.POSTGRES_USER,
host: process.env.POSTGRES_URL,
database: process.env.POSTGRES_DATABASE,
password: process.env.POSTGRES_PASSWORD,
port: process.env.POSTGRES_PORT,
keepAlive: 0,
ssl:{ rejectUnauthorized: false,
sslmode:require},
connectionTimeoutMillis: 10000, // 10 seconds
allowExitOnIdle:true,
max: 10
});
pool.connect()
.then(() => console.log('postgress connected'))
.catch(err => console.error(err))
module.exports = pool
在我的路由上,我有 redis 缓存作为中间件,这可以按预期工作并且可以确认它正在由 redis 提供服务,当请求被缓存时路由中的逻辑不会运行,但是我正在做一些负载测试看看一切如何处理尖峰,并注意到我开始从 postgres 收到错误
Error: timeout exceeded when trying to connect
我在谈论最大连接数等时也遇到了错误。
我尝试增加最大池连接,但在运行一些较大的负载测试时似乎仍然出现此错误。
我的问题是,如果应该共享连接,为什么 PG 会尝试连接?另外,如果请求被缓存,为什么还要尝试连接?
任何帮助将不胜感激!
【问题讨论】:
标签: node.js postgresql