【问题标题】:High throughput Jmeter and AWS高吞吐量 Jmeter 和 AWS
【发布时间】:2018-09-18 16:21:28
【问题描述】:

我目前在尝试使用 AWS 上的 Jmeter 达到良好的吞吐量时遇到问题。我目前使用 4 个 t3.large 实例(一个主实例,3 个从属实例)进行分布式负载测试,并且到目前为止我启动的测试不能超过每秒 60 个 HTTP 请求。我只有 2 个从站和一个包含 250 个线程组的测试计划(所以 250 * 2)达到了这个数字。然后,我在测试计划中使用 500 个线程组进行了测试,并且无法获得更高的吞吐量。因此,我添加了一个额外的从属并将线程组的数量降低到 334 (334 * 3),并且无法获得比第一次测试更高的吞吐量数。在整个测试过程中,循环计数和加速时间保持不变。

我无法分享我正在使用的测试计划,但它基本上是一个登录页面 + 登录 + 登录后导航的记录 Blazemeter Chrome 插件。

在运行测试时,我一直在使用 JVM_ARGS -Xms1024m -XX:NewSize=512m -XX:MaxNewSize=4096,以避免内存错误。

我希望能达到每秒 300 个 HTTP 请求或更多。我在这里缺少什么吗?我的基础设施还不够吗?我应该在 Jmeter 中调整一些东西吗?

线程组:

      <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Thread Group" enabled="true">
    <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
    <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" enabled="true">
      <boolProp name="LoopController.continue_forever">true</boolProp>
      <stringProp name="LoopController.loops">10</stringProp>
    </elementProp>
    <stringProp name="ThreadGroup.num_threads">334</stringProp>
    <stringProp name="ThreadGroup.ramp_time">1</stringProp>
    <longProp name="ThreadGroup.start_time">1363247040000</longProp>
    <longProp name="ThreadGroup.end_time">1363247040000</longProp>
    <boolProp name="ThreadGroup.scheduler">true</boolProp>
    <stringProp name="ThreadGroup.duration">0</stringProp>
    <stringProp name="ThreadGroup.delay">0</stringProp>
  </ThreadGroup>

【问题讨论】:

  • 您能指出您在 JMeter 中使用了哪些组件吗? Javascript? IfController(显示它)任何其他组件?也显示线程组配置
  • @UBIKLOADPACK 我有一个 HTTP 标头管理器、用户定义的变量(仅用于主机名的 2 个变量)、DNS 缓存管理器、HTTP 授权管理器、Cookie 管理器、缓存管理器和一个 CSV 数据集配置用于处理用户名和密码。另外,我有“查看结果树”,我认为如果我在 CLI 模式下运行测试,它不会引起问题。上面我添加了线程组配置

标签: jmeter


【解决方案1】:

最后,我似乎需要更强大的基础架构。我遵循了以下文档中的指南:

https://flood.io/blog/how-to-run-one-million-users/

更改为 xlarge AWS 实例后,我能够获得我想要的吞吐量。此外,我惊讶地发现他们在上面的链接中引用的数字与我在运行测试时看到的数字非常接近。

【讨论】: