我正在本地机器上运行的服务上运行负载测试,以测试Spring WebFlux WebClient。下面是安装程序:
/get /process
JMeter -> Service 1 -> Service 2->| waits for
<- <- <-| 300ms
我的JMeter脚本将调用服务1的/get端点,服务1又将调用服务2中的/process调用。注意,服务1和服务2共享相同的代码库,但调用不同的端点。流程端点等待指定的时间(500 ms)以模拟某些处理,然后返回200。
下面是我指定的JMeter负载。它由大约300个用户组成,逐渐增加并运行约5分钟。
当我运行我的负载测试时,我总是在大约2:00的时候得到以下错误:
Blockquote
1693684499199,0,非阻塞请求,非HTTP响应代码:org.apache.http.conn.HttpHostConnectException,“非HTTP响应消息:连接到localhost:9090 [localhost/127.0.0.1,localhost/0:0:0:0:0:0:1]失败:拒绝连接:connect”,jp@gc - Ultimate Thread Group - 300 Users 1-32,text,false,,2825,0,256,256,http://localhost:9090/get?delay=300&block=false,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会更好吗?
1条答案
按热度按时间hm2xizp91#
1.增加ephemeral ports range
1.减少maximum time the connection spends in TIME_WAIT state
1.增加maximum number of network connections if it's below 600
此外,在同一台机器上运行负载发生器和被测系统也不是最佳方法
1.因为两者都是资源密集型的,并且开始为资源而奋斗,所以即使使用JMeter PerfMon Plugin,如果瓶颈与资源使用有关,也很难确定瓶颈,因此至少考虑在单独的物理机器上运行JMeter和测试系统
1.您不能依赖于在缩小的环境中获得的测试结果,因为它们无法外推,压力测试应在生产或类似生产的环境中完成