JMeter / Java:http连接超时对MacOS而不是CentOS上的每秒事务(tps)有影响

问题描述 投票:0回答:1

[我在JMeter中制定了简单的测试计划:一个线程,其空http requestlocalhost,其中在运行测试时没有Web服务器处于活动状态。我从命令行运行测试。

[我注意到,在http connection timeout中设置的HTTP samplertps上的MacOS具有重大影响:100 TPS,连接超时为10毫秒,500 TPS,连接超时为1毫秒(Apache Web服务器工作时为2500 TPS)。

然而,在CentOS服务器上没有本地主机的Web服务器上(测试期间错误率100%),无论超时值如何,tps均为2500。这是为什么?可以是某些jvm参数吗?

MacOS:
java 13 2019-09-17
Java(TM) SE Runtime Environment (build 13+33)
Java HotSpot(TM) 64-Bit Server VM (build 13+33, mixed mode, sharing)

CentOS:
java version "1.8.0_144"
Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)

添加:

以下有关我尝试过的立即错误的提示:卷曲http://localhost并在服务器和MacOS上立即获得curl: (7) Failed to connect to localhost port 80: Connection refused。为什么然后JMeter仅在MacOS上等待超时?还有其他需要检查/尝试的地方吗?

http jmeter jvm
1个回答
0
投票

[可能是在一个IP addressalias)上启动Apache并且JMeter试图连接到另一个IP地址的情况。

再次检查您是否在Apache Web服务器和JMeter中使用了相同的IP,并且应该获得相同的结果。

  1. Apache bind configuration

    Listen 127.0.0.1:80
    
  2. JMeter HTTP Request Sampler配置:

    enter image description here


[如果必须使用主机名,请确保将其解析为正确的IP地址,例如,Apache Web服务器可能正在侦听IPv4 address,而Java正在尝试使用IPv6 endpoint。如果是这种情况,您可以通过将下一行添加到system.properties file

中来强制Java使用IPv4堆栈。
java.net.preferIPv4Stack=true

您还可以在DNS Cache Manager中设置主机名/ IP地址自定义解析规则

更多信息:Java Networking Properties


最后但并非最不重要的一点是,不建议将系统进行测试,并且将负载生成器与JMeter放在同一台机器上运行会占用大量资源,并且两个应用程序可能都开始为OS资源(CPU,RAM,网络,磁盘等),由于两个应用程序之间的相互干扰,要想将性能瓶颈降到最低将非常困难。

© www.soinside.com 2019 - 2024. All rights reserved.