我正在对本地计算机上运行的服务运行负载测试,以测试 Spring WebFlux WebClient。设置如下:
/get /process
JMeter -> Service 1 -> Service 2->| waits for
<- <- <-| 300ms
我的 JMeter 脚本将调用服务 1 的 /get 端点,而服务 1 又将调用服务 2 中的 /process 调用。请注意,服务 1 和服务 2 共享相同的代码库,但调用不同的端点。进程端点等待指定的时间(500ms)来模拟某些处理,然后返回 200。
这是我指定的 JMeter 负载。它由大约 300 个用户组成,逐渐启动并运行大约 5 分钟。
当我运行负载测试时,我总是在 2:00 左右收到以下错误:
块引用
1693684499199,0,非阻塞请求,非 HTTP 响应代码: org.apache.http.conn.HttpHostConnectException,"非 HTTP 响应消息: 连接到 localhost:9090 [localhost/127.0.0.1, localhost/0:0:0 :0:0:0:0:1] 失败: 连接被拒绝: 连接",jp@gc - 终极线程组 - 300 用户 1-32,text,false,,2825,0,256,256,http://localhost:9090/得到?延迟=300&块=假,0,0,0
1693684516528,670,非阻塞请求,非 HTTP 响应代码:java.net.BindException,非 HTTP 响应消息:地址已在使用中:connect,jp@gc - Ultimate Thread Group - 300 Users 1-118,text,false ,,2521,0,183,183,http://localhost:9090/get?delay=300&block=false,0,0,670
我尝试增加 Tomcat 最大线程并增加 Windows 注册表中的 MaxUserPort,但这些都没有帮助。我想知道我指定的负载对于我的设置来说是否太高?
在单独的机器上运行服务和/或 JMeter 会更好吗?