You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js API调用PostgreSQL超时:Lambda返回504错误求助

问题:Node.js API从PostgreSQL取数据超时,返回504 Lambda timeout

我开发的Node.js API用于从PostgreSQL数据库表获取数据,但调用时无返回结果并触发超时,浏览器测试GET请求时返回错误:"errorMessage": "[504] - Lambda timeout."

相关代码文件

handler.js

const db = require('./db_connect');

module.exports.getAllUsers = (event, context, callback) => {
  context.callbackWaitsForEmptyEventLoop = false;
  db.getAll('public.user_roles')
    .then(res => {
      return callback(null, {
        statusCode: 200,
        body: JSON.stringify(res)
      })
    })
    .catch(e => {
      console.log(e);
      return callback(null, {
        statusCode: e.statusCode || 500,
        body: 'Error: Could not find Users: ' + e
      })
    })
};

db_connect.js

const PgConnection = require('postgresql-easy');
const dbConfig = require('./config/db');
const pg = new PgConnection(dbConfig);
module.exports = pg;

serverless.yml

service: aws-node-express-api-project
frameworkVersion: '3'

provider:
  name: aws
  runtime: nodejs12.x
  memorySize: 128
  timeout: 120
  region: ap-south-1

functions:        
  getAllUsers:
    handler: handler.getAllUsers
    events:
      - http:
          path: users
          method: get
          cors: true
          async: true
   
            
plugins:
  - serverless-offline

排查与解决步骤

  • 核对数据库连接配置:确认config/db.js里的数据库地址、端口、账号密码、库名完全正确。如果是AWS RDS,要检查Lambda所在VPC的安全组是否允许出站访问5432端口,同时RDS的安全组要放行来自Lambda安全组的入站连接。
  • 升级Node.js运行时:当前配置的nodejs12.x已停止维护,存在性能和兼容性隐患,建议更换为nodejs18.x或更高的长期支持版本。
  • 提升Lambda资源配额:128MB是Lambda最低内存配置,会限制CPU性能,导致数据库查询处理缓慢。尝试将memorySize调整为256MB或512MB,CPU资源会随内存同步提升,能有效缩短处理时间。
  • 优化数据库查询逻辑:如果public.user_roles表数据量较大,getAll一次性拉取全量数据会导致传输超时。建议添加分页查询,或只返回业务需要的字段;同时检查表是否添加了合适的索引,提升查询效率。
  • 添加日志调试:在handler的关键节点添加日志,比如console.log('开始执行数据库查询')、console.log('查询结果:', res),通过CloudWatch日志确认请求是否到达数据库、是否有结果返回。
  • 替换数据库客户端库:postgresql-easy属于封装层库,可能存在连接管理问题。可以尝试改用官方的pg库,手动配置连接池,确保连接复用和正确释放。
  • 移除http事件的async配置:serverless的http事件中async: true可能与当前handler的promise+callback逻辑冲突,建议删除该配置项。

内容的提问来源于stack exchange,提问作者Joy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 13:15:51