JMeter 负载测试连接被拒绝

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

我正在对本地计算机上运行的服务运行负载测试,以测试 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 会更好吗?

java performance jmeter load-testing spring-webclient
1个回答
0
投票
  1. 增加临时端口范围
  2. 减少连接处于 TIME_WAIT 状态的最大时间
  3. 增加
  4. 最大网络连接数(如果低于 600)
在同一台机器上运行负载生成器和被测系统也不是最好的主意

    因为两者都非常耗费资源并开始争夺资源,所以即使您使用
  1. JMeter PerfMon Plugin,也很难确定与资源使用有关的瓶颈,所以至少考虑运行 JMeter 和正在测试的系统单独的物理机
  2. 您不能依赖在缩小环境中获得的测试结果,因为它们无法推断,压力测试应该在生产或类似生产的环境中进行
© www.soinside.com 2019 - 2024. All rights reserved.