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

Amazon RDS PostgreSQL高并发请求超时问题排查求助

Amazon RDS PostgreSQL连接超时/拒绝问题排查求助

我开发的问卷类应用采用React+Go+PostgreSQL架构,预期支持250-300并发用户同时发起相同的API GET请求。用户流程为:从数据库获取单题作答,服务器保存答案后,用户点击下一题获取新问题。

用k6做性能测试时,设置500个虚拟用户持续2分钟调用API端点,当请求量达到6000左右时,数据库频繁返回dial: i/o timeout甚至连接拒绝,请求成功率仅约93%。

已尝试的优化措施

  • 调整RDS实例的TCP keepalive参数(当前配置为tcp_keepalives_count=30、tcp_keepalives_idle=1000、tcp_keepalives_interval=1000,也试过其他数值组合)
  • 将RDS存储从20GB扩容至100GB
  • 升级实例规格,从db.t3.micro改为db.t3.medium
  • 数据库表已建立对应索引,通过explain语句验证过查询效率

这些操作都没能解决问题,无法达到100%的请求成功率。按道理常规的Go+PostgreSQL服务应该能处理这类请求,毕竟只是简单的select * from x where y查询。

代码示例

Go服务的DB仓库代码

我采用依赖注入模式,仅创建一个DB实例并传递给所有仓库及API包:

func NewRepository() (DBRepository, error) {
  dbname := getenv("POSTGRES_DATABASE", "")
  username := getenv("POSTGRES_ROOT_USERNAME", "")
  password := getenv("POSTGRES_ROOT_PASSWORD", "")
  host := getenv("POSTGRES_HOST", "")
  port := getenv("POSTGRES_PORT", "")

  dsn := fmt.Sprintf("host=%s user=%s password=%s"+
    " dbname=%s port=%s sslmode=disable TimeZone=Europe/Bucharest", host, username, password, dbname, port)
  db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{})
  if err != nil {
    return nil, err
  } 

  db.AutoMigrate(
   // 迁移表定义在这里
  )

  return &dbRepository{
    db: db,
  }, nil
}

我使用GORM的.Find()语句执行查询,问题似乎出在首次数据库连接/查询阶段,测试的端点包含2个查询,卡在第一个查询上。

k6测试代码

import http from 'k6/http';
import { check } from 'k6';
import { sleep } from 'k6';

export const options = {
  insecureSkipTLSVerify: true,
  stages: [
    { target: 225, duration: '2m' },
  ],
};

const access_tokens = []

let random_token = access_tokens[Math.floor(Math.random()*access_tokens.length)];

const params = {
    headers: {'Authorization': `Bearer ${random_token}`}
};

export default function () {
  let res =  http.get('endpoint here', params);
  check(res, {'Message': (r)=> r.status === 202});  
  sleep(1);
}

恳请各位提供排查和解决的思路。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 03:18:16