栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > .Net

jmeter压力测试报错:java.net.BindException: Address already in use: connect解决方案

.Net 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

jmeter压力测试报错:java.net.BindException: Address already in use: connect解决方案

1.压测初期在压测某一接口时,2分钟后jmeter报错如下:
  • java.net.BindException: Address already in use: connect
2.查询信息得知压力测试过程中本地TCP/IP被占满,故对本地配置进行修改; 3.修改windows本地配置信息:

3.1 设置MaxUserPort数量:

  • (1)使用win+R打开cmd,输入regedit命令打开注册表
  • (2)找到在 HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters右键Parameters;
  • (3)添加一个新的DWORD,名字为MaxUserPort;
  • (4)然后双击MaxUserPort,输入数值数据为65534,基数选择十进制;(如果是分布式运行的话,控制机器和负载机器都需要这样的操作)
3.2 深入研究提高端口的使用效率:
  • windows下的端口Time_wait&close_wait导致端口无法使用
3.2.1Time_Wait解决方案:设置TcpTimeWaitDelay参数:
  • (1)重复以上步骤1,2
  • (2)添加一个新的DWORD,名字为TcpTimeWaitDelay,将值设置为30,缩短TIME_WAIT等待时;
  • 注:只设置MaxUserPort,TcpTimedWaitDelay 直接压测仍然会导致同一报错,那怕将TcpTimedWaitDelay 设置最大300也会出现端口占用的问题
3.2.2Close_Wait解决方案:
  • Close_wait会占用一个连接,网络可用连接小。当数量过多时,可能会引起网络性能下降,并占用到系统非换页内存,尤其时在有连接池的情况下(比如Httprequest),会耗尽连接池的网络连接数,导致无法建立网络连接。
  • 设置Keepalive参数:
    • (1)使用win+R打开cmd,输入regedit命令打开注册表
    • (2)找到在 HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters右键Parameters;
    • (3)“KeepAliveTime” = DWORD:006ddd00
    • (4)“KeepAliveInterval” = DWORD:000003e8
    • (5)“MaxDataRetries” = “5”
3.3 配置TcpNumConnections参数
	+ (1)TcpNumConnections= 16777214
	+ (2)MaxHashTableSize = 65536
	+ (3)MaxFreeTcbs = 16000
3.4 以上设置完毕后重启本地计算机! 4.因本次压测为接口涉及到Nginx反向代理服务器,故需要对NG服务器做如下参数改动:
  • 4.1 web服务器的最大连接线程数,调到1024或者2048,后期直接调整至65535(官方默认最大参数设置)
  • 4.2 修改内核服务器参数:
    目的:加快被占用端口的释放速度
    #vi /etc/sysctl.conf
    • net.ipv4.tcp_tw_reuse = 1 (减少等待时间)
    • net.ipv4.tcp_tw_recycle = 1 (开启TCP连接中TIME-WAIT sockets的快速回收)
5.修改以上参数后重新压测java.net.BindException: Address already in use: connect报错未发生。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/906297.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号