当前位置: 首页 > 知识库问答 >
问题:

分布式JMeter测试失败,出现java错误,但测试将从JMeter UI运行(非分布式)

聂风史
2023-03-14

我的目标是使用 4 个 Azure 服务器作为负载生成器和 1 个 Azure 服务器来运行负载测试,以启动测试并收集结果。我运行了分布式测试,并且获得了良好的数据。但是今天当我远程启动测试时,4个负载生成器中的3个失败,所有httphtml" target="_blank">事务出错。失败的事务记录以下错误:

非HTTP响应消息:java.lang.ClassNotFoundException:org.apache.commons.logging.impl.Log4jFactory(由java.lang.ClassNotFoundException引起:org.apache.commons.logging.impl.Log4jFactory)

我确认了每台机器上的jmeter\lib文件夹中存在commons-logging-1.2.jar。

为了缩小问题范围,我设置了一个Azure服务器来启动加载并运行JMeter服务器,但这也失败了。但是,如果我在同一台服务器上从JMeter UI开始测试,测试运行正常。我认为这排除了脚本中的问题或Azure机器相互通信的问题。

我还简化了我的测试计划,使其只运行一个简单的http事务,但仍然失败。

我已经完成了所有的基本操作:重新安装jmeter,将java更新到最新版本(1.8.0_111),更新了java_HOME环境变量,并在服务器上退出了最新的Microsoft Security更新。如能就如何区分这个问题提出任何建议,我们将不胜感激。

我正在使用JMeter 3.0r1743807和Java 1.8 Azure服务器正在运行Windows服务器2008 R2

共有1个答案

谷梁晟
2023-03-14

我确实找到了解决这个问题的方法。原来是jar文件中的一些无关代码和JMeter的一个组件之间的冲突。它之所以“怪异”,是因为某些东西影响了引用的jar文件和JMeter组件的加载顺序。

我使用测试计划中的“将目录或jar添加到类路径”功能在我的JMeter脚本中包含了一个jar文件。这个jar文件包含了我测试所需的一段代码以及许多其他组件,其中一个组件,可能是类似的日志记录功能,与JMeter中的日志记录功能相冲突。问题很奇怪;测试运行了几个月,但在最不方便的时候开始失败。通过创建一个非常简单的JMeter测试来揭示问题,该测试可以正常加载和运行。如果我在JMeter中打开这个简单的测试,然后在不关闭JMeter的情况下打开我的问题测试,我的问题测试就不会失败。如果我颠倒顺序,打开问题测试,然后打开简单测试,那么简单测试也会失败。鉴于问题遵循加载东西的顺序,我开始查看jar文件并找到了我的嫌疑人。

当我构建脚本时,我把jar文件放在一边,认为我需要的函数可能依赖于jar中的其他部分。现在事情已经破裂了,我需要弄清楚这是不是真的,幸好不是。因此,为了解决这个问题,我将jar文件的扩展名改为zip,然后用7-zip进行编辑。我删除了所有代码,除了我需要的。我将所有文件夹保存在我所需代码的路径中,我这样做有两个原因;我不需要更新调用函数的代码,当我尝试更改路径时,函数无法工作。

接下来,我将文件上的扩展名更改回jar,并将JMeter的“将目录或jar添加到类路径”函数中的引用更改为指向修改后的jar。从那以后,我再也没有看到过失败。

非常感谢看到这个的人们。我希望这个决议能帮助一些人。

 类似资料:
  • 分布式负载测试 该教程描述如何在Kubernetes中进行分布式负载均衡测试,包括一个web应用、docker镜像和Kubernetes controllers/services。关于分布式负载测试的更多资料请查看Distributed Load Testing Using Kubernetes 。 准备 不需要GCE及其他组件,你只需要有一个kubernetes集群即可。 如果你还没有kuber

  • 我的场景是在通过jmeter进行分布式负载测试时,我希望csv文件应该以自动分布式的方式读取。如果我在csv数据集配置文件中有100个用户条目,并且从服务器的数量是10。所以在正常情况下,我必须以如下方式排列csv文件条目 所以我想要相同的csv文件有所有100个用户的条目,应该放在所有的从属和jmeter自动读取条目从这些文件和分发它。

  • 主要内容:创建JMeter测试计划,添加采样器,添加监听器,保存并执行测试计划,验证输出,添加吞吐量控制器,验证输出在本节中,我们将学习如何使用吞吐量控制器在JMeter中创建分布式负载测试计划。 出于测试目的,我们将在我们网站 www.yiibai.com 的URL下的某些网页上创建分布式负载。这些网页包括: 主页: www.yiibai.com 第1页(Java): www.yiibai.com/cplusplus/ 第2页(C语言): www.yiibai.com/cprogramming

  • 我试图通过jmeter在jenkins上运行一些junit测试,以进行一些GAE成本测试。至少可以说,这确实是一个令人头疼的问题。就目前所发生的事情而言,我一直努力争取得到这个问题,我希望这将是最后一次。一些要点: null

  • 我已经为MNIST分类创建了一个TF-lite模型(我使用TF 1.12.0并在Google Colab上运行它),我想使用TensorFlow Lite Python解释器对其进行测试,如 https://github.com/freedomtan/tensorflow/blob/deeplab_tflite_python/tensorflow/contrib/lite/examples/pyt

  • 我正在尝试在分布式测试中设置JMeter Simple Table Server(STS)。在本地,在主控制器上,STS服务器已启动,我可以使用