Jmeter接口压力测试,Java.net.BindException: Address already in use: connect

Java.net.BindException: Address already in use: connect

问题原因:

操作系统会为TCP/IP服务预留临时端口,Jmeter在跑并发测试的时候每开启一个线程(new socket操作)就会占用一个临时端口,若TCP/IP端口被占完了,而且没有及时释放(socket.close()操作不能立即释放绑定的端口,而是把端口设置为TIME_WAIT状态,过段时间才会真正释放,默认是240s),就会出现Java.net.BindException: Address already in use: connect这种情况。

解决方案:

从问题的原因分析,有两种解决方案,一是增加预留给TCP/IP服务的临时端口的数量,二是加快被占用端口的释放速度。

1.增加预留给TCP/IP服务的端口数量。

1.1 如果Jmeter的运行平台在Windows端。

在 Microsoft Windows XP 或 Windows Server 2003 中,由 Windows 套接字分配给应用程序的临时 TCP 或 UDP 端口号的最大值是由注册表设置 MaxUserPort 控制的,该参数的默认值为 5000。临时端口从端口号 1025 开始编号。因此,默认情况下,Windows XP 或 Windows Server 2003 会为执行通配绑定的应用程序分配一个范围从 1025 到 5000 的号码。

要在运行 Windows XP 或 Windows Server 2003 的计算机上更改临时端口的最大值,请执行以下操作:


1.


单击开始,再单击运行,键入 regedit.exe,然后单击确定


2.


找到而后单击以下注册表子项:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters


3.


编辑菜单上,指向新建,然后单击双字节值


4.


键入 MaxUserPort,然后按 ENTER。


5.


双击 MaxUserPort 值,然后以十进制或十六进制键入最大值。

键入的数值必须在 5000¨C65534(十进制)之间。如果此参数设置的值超出有效范围,则使用最接近的有效值(5000 或 65534)。


6.


单击确定


7.


退出注册表编辑器。


警告 如果错误使用注册表编辑器,可能会导致严重问题以至于需要您重新安装操作系统。Microsoft 无法保证您能够解决由于错误使用注册表编辑器而引起的问题。您必须自行承担使用注册表编辑器所带来的风险。

必须重新启动计算机,方可使 MaxUserPort 注册表设置更改生效。

如果应用程序使用通配绑定同时打开大量连接,可能只需更改这个值,而且需确保应用程序不会用尽可用的临时端口。例如,一个使用文件传输协议 (FTP) 传输大量小文件的数据备份应用程序就可能用尽临时端口。

(具体操作见博客:https://www.cnblogs.com/zhengah/p/5102403.html)

1.2 调高你的web服务器的最大连接线程数,调到1024或者2048,以resin为例,修改resin.conf中的thread-pool.thread_max,如果你采用apache连resin的架构,别忘了再调整apache;

2. 加快被占用端口的释放速度

在red hat上,查看有关的选项,
[xxx@xxx~]$ /sbin/sysctl -a|grep net.ipv4.tcp_tw
net.ipv4.tcp_tw_reuse = 0
net.ipv4.tcp_tw_recycle = 0
[xxx@xxx~]$vi /etc/sysctl,修改
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
[xxx@xxx~]$sysctl -p,使内核参数生效

(转载请标明出处)

原文地址:https://www.cnblogs.com/mungerz/p/10393279.html

时间: 2024-09-29 08:03:47

Jmeter接口压力测试,Java.net.BindException: Address already in use: connect的相关文章

Jmeter压测报错 java.net.BindException: Address already in use: connect

Jmeter压测报错java.net.BindException: Address already in use: connect 2019.08.29 18:12 今天压测接口遇到这么一个问题 当并发线程较高时,可能会出现Address already in use: connect的异常 搜索之后发现需要在regedit中添加注册表项MaxUserPort,TcpTimedWaitDelay重启一下就可以解决了. 解决方法: 1.打开注册表:ctrl+r 输入regedit 2.进入-计算机

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

最近在用jmeter做压力测试时,发现一个问题,当线程持续上升到某个值时,报错:java.net.BindException: Address already in use: connect,如下图所示: 原因:windows提供给TCP/IP链接的端口为 1024-5000,并且要四分钟来循环回收它们,就导致我们在短时间内跑大量的请求时将端口占满了,导致如上报错. 解决办法(在jmeter所在服务器操作): 1.cmd中输入regedit命令打开注册表: 2.在 HKEY_LOCAL_MACH

JMeter接口压力测试课程入门到高级实战(目录)

章节一压力测试课程介绍1.2018年亿级流量压测系列之Jmeter4.0课程介绍和效果演示 简介:讲解课程安排,使用的Jmeter版本2.常用压力测试工具对比简介:目前用的常用测试工具对比章节二 JMeter4.x基础知识讲解和压测实操3.Jmeter基本介绍和使用场景4.本地快速安装Jmeter4.x简介:GUI图形界面的安装1.需要安装JDK8.或者JDK9,JDK102.快速下载5.Jmeter目录文件讲解简介:讲解jmeter解压文件里面的各个目录,文件等6.Jmeter语言版本中英文切

JMeter接口压力测试课程入门到高级实战教程(详情)

章节一压力测试课程介绍1.2018年亿级流量压测系列之Jmeter4.0课程介绍和效果演示 简介:讲解课程安排,使用的Jmeter版本 讲课风格:涉及的组件,操作配置多,不会一次性讲解,会先讲部分,然后在后续操作中慢慢补充,更容易消化和理解 2.常用压力测试工具对比简介:目前用的常用测试工具对比1.loadrunner性能稳定,压测结果及细粒度大,可以自定义脚本进行压测,但是太过于重大,功能比较繁多 2.apache ab(单接口压测最方便) 模拟多线程并发请求,ab命令对发出负载的计算机要求很

Jmeter接口压力测试

前言 压力测试的工具挺多的,但看了其他人的文章介绍,还是选了jmeter,开源.免费啊, 下载 下载地址: https://jmeter.apache.org/download_jmeter.cgi 环境配置 下载后解压zip到任意目录,然后配置环境变量 变量名JMETER_HOME,变量值F:\apache-jmeter-4.0  在变量名CLASSPATH新增 %JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorp

jmeter 运行脚本报错 java.net.BindException: Address already in use

在win下跑jmeter时,在聚合报告中出现错误.打开日志文件(前提是将日志写入了指定文件) 发现报错的原因为:java.net.BindException: Address already in use: connect 该问题的原因为: Windows XP提供给 TCP/IP链接的端口为 1024-5000,并且要四分钟来循环回收他们.就导致我们在短时间内跑大量的请求时将端口占满了.   解决方案为: 1.cmd中,用regedit命令打开注册表 2.在 HKEY_LOCAL_MACHIN

学习总结——JMeter做http接口压力测试

JMeter做http接口压力测试 测前准备 用JMeter做接口的压测非常方便,在压测之前我们需要考虑这几个方面: 场景设定 场景分单场景和混合场景.针对一个接口做压力测试就是单场景,针对一个流程做压力测试的时候就是混合场景,需要多个接口共同作用. 压测时间设定 通常时间设为10 – 15 分钟,如果涉及疲劳测试的话时间可根据实际情况设定,1周,一个月不等. 测试数据准备 如果需要测试的数据量很大的话,需要造数据,造数据可以JMeter操作数据库来完成,也可以用Python造数据. 结果查看

使用Loadrunner进行http接口压力测试

业务描述: 在业务系统里进行查询操作,查询的结果是通过请求http接口,从系统中处理并将结果以json字符串返回. 本文就讲述使用Loadrunner对此类接口进行压力测试并记录相关的性能指标数据: 一.安装Loadrunner 本次测试过程使用Loadrunner 11.0版本. 二.部署环境 1.接口服务器一台; 2.用于运行Loadrunner的压力测试机1台或N台 ,在条件允许下,尽可能提供高配置的CPU 和内存. 3.接口服务器和压力测试机建议应部署于同一个局域网内,否则测试过程和结果

性能测试工具 jmeter 分布式压力测试实操

性能测试工具 jmeter 分布式压力测试实操 本文在Non-GUI Mode下进行,准备好三台有jdk环境,linux操作系统,同一局域网测试机器,运行两台slave,一台master机器,进行分布式测试. slave-1/slave-2/master配置好jmeter环境(以下操作在jdk版本1.8环境下进行的) 1.下载jmeter3.2 wget https://archive.apache.org/dist/jmeter/binaries/apache-jmeter-3.2.tgz 2