当服务器始终返回200时,JMeter中真正的错误是什么?

时间:2018-08-02 16:08:55

标签: jmeter load-testing

我正在对一个电子商务站点进行负载测试。在中等负载到重负载下,Jmeter报告的错误数量异常高,即在生成的.csv文件中出现succes=FALSE,这在JMeter仪表板报告中转化为相当高的%错误。

在检查Kibana日志时,除少数几个WARN之外,没有任何错误,并且所有http请求的状态均为200。实际上,我可以验证在我的流程中创建的测试用户是否可以登录并查看应该执行的测试。

我的问题是-当服务器端只返回200时,JMeter如何确定此错误(非200?)?对于更少的线程,错误为0%。

1 个答案:

答案 0 :(得分:0)

首先,我将检查任何断言是否会由于任何原因而失败。因此,禁用任何断言并运行脚本的大多数原始版本而没有任何失败的可能性(基于采样器响应的除外)将是我的第一步。如果没有帮助...

HTTP采样器将失败,因为返回码<200,或者返回码> = 400,或者任何Java异常,这将在无法发送请求或未收到服务器响应时发生(在全)。最常见的是与各种潜在问题有关的超时:

  • JMeter侧缺少可用端口。由于您指出问题仅在更多的JMeter用户中发生,所以有可能。在纸上,您有65535个端口,但是Windows和Linux都默认将可用端口数限制为数千个。确保您有足够的端口来运行负载,并在增加线程数量时监视端口使用情况。

  • 即使所有端口都可用,许多端口可能仍处于TIME_WAIT或CLOSE_WAIT状态几分钟,这取决于客户端和服务器的交互方式以及其他网络问题。因此,从理论上讲,您可能有65k端口,但实际上您没有足够的端口。在这种情况下,值得检查为什么会发生(可能是错误),并可能减少端口在此* _WAIT状态下的等待时间。

  • 您还需要确保有足够的RAM,JVM堆和CPU:监视以查看是否存在瓶颈,该瓶颈会导致速度缓慢,从而破坏Sampler成功完成工作的能力。

如果以上所有操作均按预期工作,则服务器或客户端与服务器之间的某人(负载平衡器,代理,防火墙)均引起此问题。

  • 我将从服务器启动,并验证服务器发送的所有请求均已收到。例如。如果您发送2000个请求,而服务器收到1000个成功完成的请求,则从服务器角度来看一切都很好,但是Jmeter的错误率将为50%。

  • 还要检查您的JMeter日志定义,并确保将错误和异常正确地写入了它们(它们是多行消息,并且可能导致日志定义在到达它们时中断,因此您不会看到它们)。例如,运行指向不可用服务器的HTTP Sampler。看看是否可以诊断返回的异常是什么。

除此之外-确定哪个部分对您“说谎”是一种方法,但是很难根据当前信息提供任何更具体的建议