17370845950

Jmeter压测serverless接口,端口占用问题

在项目中引入serverless技术后,前端从被动接受数据变为主动聚合多个单接口,这种变化对接口处理性能提出了新的要求,因此需要进行压测。

前期相关文章:Jmeter系列-阶梯式加压神器

压测过程中,使用的是基于本地Windows系统的压测机。在持续加压请求下,服务端返回了以下错误:java.net.BindException: Address already in use: connect

通过xlog查看日志后,发现并未报错。经过检索,发现这是由于压测机端口被占用,请求处理不过来所导致的错误。官方解释称:“在Windows环境下,端口循环回收需要2~4分钟。”推测可能是由于Windows下压测端数量有限,端口资源被占满,且未能及时循环回收,导致报错。

解决方案如下:

  1. 打开cmd,输入regedit命令,打开注册表。

  2. 找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters目录;右击Parameters,添加一个新的DWORD,命名为MaxUserPort。

  3. 双击MaxUserPort,输入65534,基数选择十进制(如果是分布式运行的话,控制机器和负载机器都需要这样操作)。

  4. 修改配置后,必须重启Windows才会生效。

补充:我在修改上述问题后可以正常进行测试,但两天后增加线程数后再次出现相同问题。进行以下配置后,测试可以正常进行。

在上述三步骤后,再添加TcpTimedWaitDelay,数值为30-300,选择十进制。重启Windows后才会生效。

近期热文:软件测试工程师工作必备模板五件套

PS:加入测试群,领取精品Python/自动化测试资料,请添加下方小编微信。

点赞、转发、分享是小编输出最大的动力!!!


排版:可乐超

题图:可乐超