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

JMeter上传文件到AWS RDS报Communications link failure错误的解决办法

问题原因定位
  • 连接数配置冲突:JMeter线程数设为200,刚好等于RDS的max_connections上限,而RDS默认会预留部分连接给后台管理进程使用,实际可对外提供的用户连接数不足200。同时你在JMeter JDBC配置中设置了最大连接数为0(无限制),会持续向RDS发起连接申请,超过RDS连接上限的请求会被直接拒绝,就会出现部分请求正常、部分报错的现象。
  • 网络连接回收触发:AWS底层网络链路(安全组、NACL、RDS网络栈)默认会主动断开长时间无数据传输的闲置连接,你未在JDBC连接中配置TCP保活、超时相关参数,部分LOAD DATA传输过程中遇到网络波动,连接被提前回收后就会抛出链路失败错误。
  • 锁等待叠加连接超时:LOAD DATA LOCAL INFILE执行时会触发表锁或批量行锁,你设置的innodb_lock_wait_timeout为6000毫秒(6秒),部分请求排队等锁的时间超过了网络层的闲置连接回收阈值,等拿到锁要回写数据时连接已经被断开,就会触发报错。
  • 大文件传输适配不足:15MB文件单次传输的耗时波动大,部分慢请求的传输时长超过了默认的JDBC socket超时阈值,导致连接被主动中断。
可行解决方案
  1. 连接数配置优化
  • 将JMeter JDBC Connection Configuration的Max connections调整为180,预留20个连接给RDS后台使用,避免触达连接上限;同时将Max Wait ms改为30000,避免线程无限等待连接占用资源。
  • 临时将RDS的max_connections参数调整为250,给压测留足够的连接冗余。
  • 线程组的线程数同步调整为180,和JDBC连接池的最大连接数对齐,避免大量线程排队等待连接。
  1. JDBC连接串参数补充
    在你使用的JDBC URL末尾追加以下参数,适配大文件传输和AWS网络特性:
connectTimeout=60000&socketTimeout=120000&tcpKeepAlive=true&autoReconnect=true&useLocalSessionState=true

其中connectTimeout设为60秒、socketTimeout设为120秒,开启TCP保活机制,避免连接被AWS网络链路主动回收。

  1. 锁与传输逻辑优化
  • 将RDS的innodb_lock_wait_timeout调整为120000(120秒),和socket超时参数对齐,避免等锁过程中连接被提前回收。
  • 可将15MB的待传输文件拆分为3~5个小文件分批传输,减少单次LOAD DATA的锁占用时长,降低锁等待概率。
  1. 连接有效性校验配置
    在JMeter JDBC Connection Configuration中新增Validation Query为SELECT 1,勾选Test On Borrow选项,每次从连接池拿连接时先校验连接有效性,无效连接直接销毁重建,避免使用已经被断开的死连接。

如果调整后仍有报错,可抓取JMeter到RDS的TCP报文,排查是否存在安全组、NACL的超时配置主动断开连接的情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 19:21:00