Apache 基准测试第一个请求不并发

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

使用 Apache Benchmark 工具时,我注意到第一个请求没有同时执行。

例如,运行时:

ab -n 4 -c 4 http://localhost:8080/block/10
我得到以下结果:

2024-01-17T13:40:28.398-05:00  INFO 61127 --- [sample-client] [nio-8080-exec-1] a.s.s.client.controller.HomeController   : 200 OK on Thread[#56,http-nio-8080-exec-1,5,main]
2024-01-17T13:40:38.414-05:00  INFO 61127 --- [sample-client] [nio-8080-exec-3] a.s.s.client.controller.HomeController   : 200 OK on Thread[#58,http-nio-8080-exec-3,5,main]
2024-01-17T13:40:38.414-05:00  INFO 61127 --- [sample-client] [nio-8080-exec-2] a.s.s.client.controller.HomeController   : 200 OK on Thread[#57,http-nio-8080-exec-2,5,main]
2024-01-17T13:40:38.414-05:00  INFO 61127 --- [sample-client] [nio-8080-exec-4] a.s.s.client.controller.HomeController   : 200 OK on Thread[#59,http-nio-8080-exec-4,5,main]

第一个请求在 13:40:28 执行并自行运行。返回后,其余 3 个请求是并行的。所有 4 个请求都在不同的线程上运行,但不同时运行。

我不认为这是我的笔记本电脑无法同时处理 4 个线程的问题。如果我将参数更改为

-n 3 -c 3
我会得到相同的结果。第一个请求被执行,然后当它完成时,剩余的 2 个请求将并行完成。

我使用的代码是一个 Spring Boot 应用程序,它调用另一个 Spring Boot 应用程序。我正在观看Spring 开发者倡导者 Dan Vega 的视频。 Dan 也遇到了这个问题,第一次出现在视频的 16:15 左右。他预计时间为 15 秒,但结果是 18 秒。在他的所有测试中,这一偏差都持续存在。视频中的原因可能与我遇到的情况相同。

对于造成这种情况的原因或如何解决它有什么想法吗?这导致基准偏离。

java spring benchmarking apachebench
1个回答
0
投票

我注意到同样的行为,它与你的服务器无关。我尝试了不同的服务器(WireMock、Spring Boot 应用程序、Mockoon),结果都相同。不过,我发现了名为 Hey 的“apachebench replacement”工具,它似乎按预期工作。

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