【问题标题】:JMeter message throughput too lowJMeter 消息吞吐量太低
【发布时间】:2023-04-08 14:26:01
【问题描述】:

我正在尝试使用 JMeter 来测试 ActiveMQ 集群。根据要求,我需要每秒至少获得 2k 条消息作为测试。问题是我无法获得所需数量的消息。

我尝试在进入集群之前针对本地队列对其进行测试,结果并不好。在安装了 Windows 10 的 PC(相当强大)中,我能做的最好的事情是每秒几百条消息。在装有 OSX 10 的 Mac (Macbook Pro) 中,我可以将其提升到 1.5k 左右。

我在 JMeter 中尝试了不同的配置:改变线程数、消息大小、请求和响应模式与仅请求...但没有任何效果。

当我运行自定义代码时,我可以在一秒钟内将大约 10k 条消息推送到队列中。是否有任何我可能遗漏的特定配置?我已经浏览了在线教程,但找不到任何解决问题的方法。

【问题讨论】:

  • 您是否收到任何 JMeter 异常(例如内存不足)?如果没有,您是否遇到任何操作系统限制?我将从端口使用开始,这可能是一个容易的瓶颈。还是只是比您预期的要慢?

标签: java testing jmeter


【解决方案1】:

JMeter 默认配置有利于测试开发和调试,但在执行高负载时,您需要记住几个要点:

  1. 不要使用 GUI 执行测试,您应该使用 non-GUI mode 运行测试
  2. 默认 JVM 堆分配仅为 512 Mb,您肯定需要在 JMeter 启动脚本中提高此设置。同样适用于堆栈大小和垃圾收集器设置。请参阅JVM Tuning: Heapsize, Stacksize and Garbage Collection Fundamental 文章以了解有关 JVM 内部的更多信息。
  3. 在负载测试期间不要使用Listeners,它们会在资源利用方面造成巨大的开销,并且不会增加任何价值。
  4. Pre/Post ProcessorsAssertions 的使用降至最低。

请参阅9 Easy Solutions for a JMeter Load Test “Out of Memory” Failure 了解以上几点解释和更多提示。

作为万一遇到单个负载生成器机器的硬件限制的最后手段,您始终可以考虑running JMeter in distributed mode 并添加更多 JMeter 引擎。

【讨论】:

    【解决方案2】:

    在摆弄了几个小时后,我找到了答案。原来有一个默认未选中的复选框,它使所有消息都持久化。当我勾选它时,我得到了我正在寻找的吞吐量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多