Apache jMeter在高负载请求时出错 - java.net.ConnectException: 连接超时:连接

4

我在使用jMeter测试我的.NET Web应用程序时遇到了困难。我正在针对我的应用程序在Azure的一个暂存环境中本地运行jMeter。访问一些端点时,我会得到:

java.net.ConnectException: Connection timed out: connect

这告诉我问题出在我的端口,而不是由我的应用引起。我的应用没有显示任何错误,并且能够轻松地处理此数量的请求。

在这个特定的测试中,我有300个线程,每10秒钟增加一个,重复3次。

我可以做些什么来进一步诊断?是否有某种客户端限制?


  1. 在运行300个线程之前,你能成功地运行1、10、100个线程吗?
  2. 这个错误是针对所有请求发生的,还是只有一些请求会出现?
- timbre timbre
@KirilS. 是的,是的,是的。只是一些。 - SB2055
2
在这种情况下,你的测试可能会用尽可用的端口,导致客户端等待端口,并有时超时。您可以通过从2个JMeter主机运行150+150个客户端来确认。如果可以工作,那就更有可能了。如果您使用的是Windows,请开始执行本文建议的注册表更改(特别是与TIME_WAIT相关的更改):https://msdn.microsoft.com/en-us/library/aa560610(v=bts.20).aspx(虽然它是关于BizTalk的,但实际上适用于任何其他端口耗尽的情况)。在Linux下,类似的过程在这里描述:http://www.lognormal.com/blog/2012/09/27/linux-tcpip-tuning/. - timbre timbre
谢谢@KirilS。 - SB2055
1个回答

1
JMeter默认配置不适合产生高负载,您只能将其用于测试开发和调试。当进行负载测试时,您需要至少增加分配给JMeter的Java Heap Space(默认情况下仅为512Mb,我认为您用来阅读此页面的浏览器消耗的内存是其两倍)。
您还应该在非GUI模式下运行测试,因为JMeter GUI未设计为在生成更大或更小的负载时正确显示信息,您最多可以使用它50个线程。
更多信息:
我建议您在测试期间注意负载生成器的健康状况,并收集有关CPU、RAM、Swap、Disk、Network使用情况以及一些JVM指标(如Heap使用情况、Garbage collections等)的信息,以便您可以看到您的JMeter实例是否配置得足够好,是否有足够的硬件资源余地等。当然,在服务器端进行此操作是必须的。您可以使用PerfMon JMeter Plugin来收集此信息,并将结果与其他测试指标一起绘制,以便您可以相关值并确定原因。请参阅How to Monitor Your Server Health & Performance During a JMeter Load Test以获取插件配置和使用说明。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接