首页 > 解决方案 > 日志:无法从客户端接收数据:连接超时 AWS RDS POstgresql

问题描述

我正在使用 AWS RDS Postgresql。

当我的网站尝试连接到数据库时,它说:

net::ERR_CONNECTION_TIMED_OUT

但是,我可以从 ec2 实例和通过 pgAdmin 连接到数据库。

Elastic Beanstalk 不会在日志中显示任何错误。它运行我的后端代码,即 Nodejs 并且没有错误。EB 的健康状况是“严重”,但它没有任何 Html 页面,因为它仅用于后端。所以,我猜这里的健康状况并不重要,因为日志显示它在端口 8080 上运行,并且不存在错误。

RDS 日志显示以下内容:

database@database:[9935]:LOG: could not receive data from client: Connection timed out

我不明白为什么我的客户端无法连接到数据库。密码和主用户名以及端点正确。

我在 Elastic Beanstalk for Postgres 中使用的参数:

RDS_DB_NAME, RDS_HOSTNAME, RDS_PASSWORD, RDS_PORT, RDS_USERNAME

要从我的本地终端和 EC2 实例连接,我使用:

psql --host=endpoint --port=5432 --username=username --password --dbname=database

与 Postgres 的连接:它在部署应用程序之前在本地工作。

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

const pool = new Pool({

host     : process.env.RDS_HOSTNAME,
user     : process.env.RDS_USERNAME,
password : process.env.RDS_PASSWORD,
port     : process.env.RDS_PORT,
database : process.env.RDS_DB_NAME
});
module.exports = pool;
pool.connect(function(err) {
if (err) {
    return console.error('error: ' + err.message);
}
console.log('Connected to the Postgres server.');
});

然后弹性 beanstalk 日志文件显示它已连接:

web: Connected to the MySQL server.

标签: node.jspostgresqlamazon-web-servicesamazon-rds

解决方案


推荐阅读