Web 负载测试 - 波浪响应时间图表示什么?

Web load testing - what does a wavy response time graph indicate?

我正在 运行 使用 JMeter 对 API 进行负载测试。当我在与测试相同的电脑上托管 API 时(虽然数据库是远程的)我得到了好的结果。 但是,当我尝试 运行 通过相同的 API 进行负载测试但托管在同一网络上的不同 pc 上时,我在测试结果中得到了这种波浪形模式。

四组线中的每一组都是特定 API 端点的响应时间,蓝线是活动线程数。 问题是:这个波浪图案有什么意义吗?当 API 与测试托管在同一台机器上时,此模式不可见。 结果非常不同,我认为这种模式可能与问题相关。

我使用了 200 个活动线程并且没有特定的配置会产生这种模式的请求。

您需要注意以下几点:

  1. Connect Time and Latency metrics, Elapsed Time is a sum of Connect Time, Latency and the actual server response time so these "waves" might be caused by networking issues
  2. 这可能表明正在测试的应用程序正在执行,即 garbage collection or using swap file which is much slower than memory due to lack of resources Make sure that it has enough headroom to operate in terms of CPU, RAM, Network and Disk IO. These metrics can be checked using i.e. JMeter PerfMon Plugin。这同样适用于 JMeter,如果 JMeter 无法足够快地发送请求——您将看到吞吐量下降。
  3. 查明问题最有效的方法是 运行 您在 profiling tool telemetry 下申请,这样您就可以
    识别最重的函数、堆中最大的对象等
  4. 同时考虑检查您的数据库并检测慢速查询,因为问题可能是由数据库问题(包括网络层)引起的