Jmeter进阶篇(31)解决java.net.BindException: Address already in use: connect报错

发布于:2025-02-11 ⋅ 阅读:(94) ⋅ 点赞:(0)

📚前言

近期雪雪妹妹在使用Jmeter执行压测的时候,发现了一个非常让她头疼的问题,她使用20并发跑,正确率可以达到100%,但是一旦使用200并发,就会出现大量的报错,报错内容如下:

java.net.BindException: Address already in use: connect
	at java.net.DualStackPlainSocketImpl.connect0(Native Method)
	at java.net.DualStackPlainSocketImpl.socketConnect(Unknown Source)
	at java.net.AbstractPlainSocketImpl.doConnect(Unknown Source)
	at java.net.AbstractPlainSocketImpl.connectToAddress(Unknown Source)
	at java.net.AbstractPlainSocketImpl.connect(Unknown Source)
	at java.net.PlainSocketImpl.connect(Unknown Source)
	at java.net.SocksSocketImpl.connect(Unknown Source)
	at java.net.Socket.connect(Unknown Source)
	at org.apache.http.conn.ssl.SSLConnectionSocketFactory.connectSocket(SSLConnectionSocketFactory.java:368)

📚原因分析

这个报错的原因是windows本身提供的端口数量是有限的,使用Jmeter发送大量请求的时候,端口被大量占用,并且要四分钟来循环回收他们,这就导致我们在短时间内跑大量的请求时将端口占满啦。

📚如何解决呢?

1.进入注册表

打开cmd窗口,输入regedit,进入到注册表。
在这里插入图片描述

2.创建DWORD

进入到 \HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters 目录,新建项,名字改为:DWORD
在这里插入图片描述

3.设置MaxUserPort

在DWORD上右键,新建32位值,选择十进制,输入数值65534,重命名为MaxUserPort。
在这里插入图片描述
在这里插入图片描述

4.设置TcpTimedWaitDelay

继续创建一个名为TcpTimedWaitDelay的32位值,值设置为十进制的30:
在这里插入图片描述
以上操作,增大了可分配的tcp连接端口数、减小了处于TIME_WAIT状态的连接的生存时间。然后我们重启电脑!

5.调整Jmeter.bat

修改Jmeter.bat文件中的这一行:

在最后增加 -Dsun.net.tryReuseAddr=true
tryReuseAddr这个命令是让你可以复用处于 TIME_WAIT 状态的端口,可能会有助于解决端口冲突导致的绑定异常问题。

6.重启电脑

再次验证,在高并发场景下就不再报错啦!

📚附加方案

一般情况下使用如上方案就足矣啦,如果还是发现报错,可以尝试增加这些配置项,精准调整连接数控制相关的各项配置:
在这里插入图片描述
相关的文件我放在资源库啦!各位可以自行去下载!
用于解决Jmeter java.net.BindException: Address already in use: connect报错的DWORD注册表文件

✍结尾

🀙🀚🀛🀜🀝🀞🀟🀠🀡🀐🀑🀒🀓🀔🀕🀖🀘🀗🀏🀎🀍🀌🀋🀊🀉🀈🀇🀆🀅🀃🀂🀁🀀🀄︎🀢🀣🀥🀤🀦🀧🀨🀩🀪

如果完成所有配置,还是发现报错,那可能是你用的并发量确实太高啦,这种情况下可以尝试使用Jmeter集群,解决此问题。

📘 妹妹听后点了点头,脸上露出了满意的笑容。她轻声说道:“原来如此,谢谢你,鸽鸽。看来我不仅要多读书,还要多动手实践,提升自己才行。”

看着她那充满求知欲的眼神,我不禁感叹,学习之路虽然充满挑战,但有这样一位美丽聪慧的伙伴相伴,一切都变得格外有意义。快去和妹妹一起实践一下吧!

求赞图

笔者 綦枫Maple 的其他作品,欢迎点击查阅哦~:
📚Jmeter性能测试大全:Jmeter性能测试大全系列教程!持续更新中!
📚UI自动化测试系列: Selenium+Java自动化测试系列教程❤
📚移动端自动化测试系列:Appium自动化测试系列教程
📚Postman系列:Postman高级使用技巧系列


👨‍🎓作者:綦枫Maple
🚀博客:CSDN、掘金等
🚀CSDN技术社区:https://bbs.csdn.net/forums/testbean
🚀网易云:https://y.music.163.com/m/user?id=316706413
🚫特别声明:原创不易,转载请附上原文出处链接和本文声明,谢谢配合。
🙏版权声明:文章里可能部分文字或者图片来源于互联网或者百度百科,如有侵权请联系处理。
🀐其他:若有兴趣,可以加页面左侧的《Java自动化技术交流屋》探讨学习哦~

网站公告

今日签到

点亮在社区的每一天
去签到