JMeter,linux环境下,执行jmeter报错:java.net.BindException: Address already in use: connect-已解决

一、问题描述:

    通过jmeter进行性能测试,报错:address already in use:connect

二、原因分析: 

        1、系统的端口被耗尽了(Windows默认端口范围:1024-5000);

        2、操作系统要 2~4分钟才会重新释放这些端口;

        3、可以增加系统的可用端口来解决;

        4、Windows端口最大数为65535,Linux是65000

1、(Windows/Linux)系统为了保护本机,限制了其他机器到本机的连接数
2、TCP/IP 可释放已关闭连接并重用其资源前,必须经过一定时间

3、关闭和释放之间的时间间隔通称 TIME_WAIT 状态或两倍最大段生命周期(2MSL)状态。此期间,重新打开到客户机和服务器的连接的成本少于建立新连接。减少此条目的值允许 TCP/IP 更快地释放已关闭的连接,为新连接提供更多资源。如果运行的应用程序需要快速释放和创建新连接,而且由于 TIME_WAIT 中存在很多连接,导致低吞吐量,则调整此参数。

三、解决方案:  

        1、修改系统的配置文件

# 打开编辑内核参数文件
vim /etc/sysctl.conf

        2、添加以下内容: 

# 开启tcp_tw重用,允许将TIME-WAIT sockets重新用于新的TCP连接(默认为0,表示关闭);
net.ipv4.tcp_tw_reuse = 1

# 开启tcp_tw快速回收,TCP连接中TIME-WAIT sockets的快速回收(默认为0,表示关闭);
net.ipv4.tcp_tw_recycle = 1 

# 表示当keepalive起作用的时候,TCP发送keepalive消息的频度由缺省的2小时,修改为20分钟
net.ipv4.tcp_keepalive_time = 1200

# 表示用于向外连接的端口范围。缺省情况下很小:32768到61000,修改为1024到65000
net.ipv4.ip_local_port_range = 1024 65000

# 表示SYN队列的长度,默认为1024,加大队列长度为8192,
# 可以容纳更多等待连接的网络连接数。
net.ipv4.tcp_max_syn_backlog = 8192

# 表示系统同时保持TIME_WAIT的最大数量,
# 如果超过这个数字,TIME_WAIT将立刻被清除并打印警告信息。
net.ipv4.tcp_max_tw_buckets = 5000

        3、执行如下命令,使设置生效:

/sbin/sysctl -p

扫描二维码关注公众号,回复: 15254101 查看本文章

        

猜你喜欢

转载自blog.csdn.net/Moonlight_16/article/details/127556577
今日推荐