【问题标题】:JMeter inconsistent CommunicationsException: Communications link failureJMeter 不一致的 CommunicationsException:通信链路故障
【发布时间】:2021-11-04 04:59:48
【问题描述】:
com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure

The last packet successfully received from the server was 976,464 milliseconds ago. The last packet sent successfully to the server was 974,674 milliseconds ago.

当我运行以下将 15 MB 文件发送到 AWS RDS 的测试计划时,JMeter 中出现此错误。

LoadTestPlan
  JDBC Connection Configuration: 
     Max Wait ms: 0 (indefinite wait)
     Max connections: 0 (no limit)
  ThreadGroup
      No. of threads: 200
      Ramp up seconds: 100
      Loop Count: Indefinite
      Scheduled to run for 3 hours
    JDBC Request
       LOAD DATA LOCAL INFILE statement

RDS 配置

Engine 5.7.33
Max connections: 200
Innodb lock wait timeout: 6000
Max allowed packet: 64 MB

对于这个通信链接失败有很多解决方案,但对我来说,一些请求是成功的,而对于一些我得到了这个错误。因此我开始认为这是网络问题,但我使用的是 74 Mbps 速度的高速以太网。即使是网络问题,也必须有一些参数在调整后应该允许即使来自较差网络的连接也能成功。

JMter 版本:5.4

【问题讨论】:

    标签: mysql jdbc jmeter amazon-rds


    【解决方案1】:

    关于你的陈述:

    最大连接数:0(无限制)

    我不认为这是真的,根据BasicDataSource Configuration Parameters 我会说它是8(见maxTotal 参数)

    所以看起来您正在使用 200 个并发线程并且在池中有 8 个连接,请尝试将这些最大连接数增加到等于 JMeter 线程的数量。或者,如果您不直接测试数据库,您应该模仿您的应用程序 JDBC configuration

    我知道 JMeter 尝试将最大池大小设置为等于初始池大小,正如 this line 所证明的那样,但是 the source code of BasicDataSource suggests setting a negative number for "no limit"

    更多信息:The Real Secret to Building a Database Test Plan With JMeter

    【讨论】:

    • 最大连接数字段为空。我将其更改为 0,这样我就没有任何限制了。我读到“池中允许的最大连接数。在大多数情况下,将其设置为零 (0)。这意味着每个线程将获得自己的池,其中包含一个连接,即线程之间不共享连接。 "来自jmeter.apache.org/usermanual/…
    猜你喜欢
    • 2012-10-14
    • 2012-02-21
    • 2014-12-31
    • 2011-02-28
    • 1970-01-01
    相关资源
    最近更新 更多