• 解决方式
  • 1、取消JMeter-HTTP请求Use KeepAlive设置
  • 2、更改Windows注册表中默认的TCP/IP端口数量
  • 性能测试
    • LoadRunner
    • Jmeter
  • 安全测试
    • Appscan
    • CheckMarx
    • Nessus
    • Metasploit
    • SQLmap
  • 数据库
    • MySQL
  • Web应用
    • Tomcat
    • Nginx
  • 等级保护
  • 命令
  • 安全漏洞
    • 学习
  • Windows
  • Linux
  • Kali
  • Docker

JMeter错误:java.net.BindException: Address already in use: connect 

  • go君
  • 2021-07-23
  • 0

第一次用JMeter去实施上万并发的测试,结果遇到了滑铁卢,因为并发量较大所以需要多机负载的方式去实现。在确认单机的极限并发人数时遇到了以下错误:java.net.BindException: Address already in use: connect  。

原因在于windows默认的TCP/IP端口只有1024-5000个,而且释放的话大概需要4分钟才能够将之前占用的端口释放掉,导致当jmeter请求达到一定数量时提示上述错误

解决方式

1、取消JMeter-HTTP请求Use KeepAlive设置

2、更改Windows注册表中默认的TCP/IP端口数量

使用cmd输入regedit进入到负载机的注册表,找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

在Parmeters右键新建DWORD值,命名为MaxUserPort,然后选择十进制并输入数据65534后保存

重新压测后发现到一定时间后还是存在该错误,继续寻找新的方法,突然想起了应该查看下端口占用的情况的,结果发现有大量的TIME_WAIT数据,根据查找结果有说windows下释放端口默认为5分钟,这时间也太长了- - 没办法又找了找更改默认端口时间的答案,在同样的注册表位置新建TcpTimeWaitDelay,值类型DWORD,数值数据为5s

重启测试机,再次进行测试,发现TIME_WAIT数量大幅度的下降,更改有效了。 😯 

引用内容:《jmeter压力测试(踩坑)报错》

© 2015-2023 TestGo 付杰博客
Wing
京ICP备18022519号
  • {{ item.name }}
  • {{ item.name }}