0


jemeter压测中所遇报错-connect

一、java.net.BindException: Address already in use: connect

1、释放端口

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

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

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

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

完成上述操作后重启负载机,结束!

2、释放端口第二种--网上释义

短时间内new socket操作过多

而socket.close()操作并不能立即释放绑定的端口

而是把端口设置为TIME_WAIT状态

过段时间(默认240s)才释放(用netstat -na可以看到)

最后系统资源耗尽

(windows上是耗尽了pool of ephemeral ports 这段区间在1024-5000之间)

3、释放端口第三种--网上释义

大概原因是短时间内new socket操作很多,而socket.close()操作并不能立即释放绑定的端口,而是把端口设置为TIME_WAIT状态,过段时间(默认240s)才释放,(用netstat -na可以看到),最后系统资源耗尽(windows上是耗尽了pool of ephemeral ports ,这段区间在1024-5000之间; )

避免出现这一问题的方法有两个,一个是调高你的 web服务器的最大连接线程数,调到1024,2048都还凑合,以resin为例,修改resin.conf中的thread-pool.thread_max,如果你采用apache连resin的架构,别忘了再调整apache;

另一个是修改运行web服务器的机器的 操作系统网络配置,把time wait的时间调低一些,比如30s。

在red hat上,查看有关的选项,

4关闭防火墙-网上释义

解决方案:

1.windows防火墙-->允许程序或功能通过windows防火墙-->勾上不能访问程序(java(TM) Plaform SE binary:如果找不到使用第二种解决方案)-->确定 --->完成

** 2.*windows防火墙-> 关闭防火墙---->重新启动你先前使用不起的程序,这时可以了(为了安全, 最好将防火墙开启)--->开启防火墙 -->防火墙将询问你是否程序访问网络(如果有多个网络,这时你得选择你正在使用的网络)--->完成

3.高级设置:

例如:mysql的远程访问,ip就是ping得通,它就是不能访问,纠其原因,端口被killer了,开放myslq端口即可访问

发生的原因:** ** 防火墙阻止程序访问网络

网络更换后, 防火墙 将启用新的防火墙规则--什么都没有, 这样,更换后所有再访问网络的程序--防火墙都将视为新程序--这时, 要你定义的新的防火墙规则 --询问你:是否允许*程序访问正在使用的网络-->是否由你决定

5网上释义-没有操作验证

loadrunner进行压力测试的时候,脚本通过socket连接服务器,偶尔loadrunner会报如下的错误:java.net.ConnectException: Connection refused,Connection timed out:connect;java.net.BindException:Address already in use: connect。除了网上说的由于本地socket开得过多,导致socket不够用的情况,也根据操作修改了注册表,但压测时还是会有错误。

解决办法:https://blog.csdn.net/weixin_44256848/article/details/91384018

按照操作都改了,还是会报错误,根据这个思路,理解根本原因是socket不够用,为啥不够用,看了一下服务响应时间都是几毫秒,实在太快了,电脑没做过什么专门配置是跟不上的。因为本身这个压测是测试高可用,没追求性能,故把服务处理时间sleep一会儿,loadrunner相关异常就不在报了。

6,一些配置文件的修改

通过修改JMeter系统配置文件:

{JMeter 主目录}\bin\system.properties,将 java.net.preferIPv4Stack 设置为 true 即可。

二、java.net.SocketException: Socket closed

1、设置连接的超时时间。

如果在 HTTP Request Sampler 的 Basic 里勾选了Use KeepAlive,那么建议在 Advanced 页签下:

1、Implementation 选为 HttpClient4

2、Timeouts 中的 Connect 一般设置一个10~60秒的值,表示连接的空闲超时时间,避免由于没收到被压测端的响应回来的 Keep-Alive 的 Header 导致的连接断开

这个值的单位是毫秒:15s*1000=15000s

在这里插入图片描述
通过上述方法设置后,再次压测,还是会出现这个错误

再次百度,

https://cwiki.apache.org/confluence/display/jmeter/JMeterSocketClosed?spm=a2c4g.11186623.2.16.41ff41eaJzLjlR

将httpclient4.retrycount=0 改为 =1

在这里插入图片描述

在这里插入图片描述

2、jmeter压测-java.net.SocketException:Socketclose。。。 - 百度文库

此种方式未经验证,只是查询到有此可能

三java.net.SocketException: Connection reset

四报500错误

五报502错误

六报304错误

三四五六见其他文章

七java.net.SocketException: Socket closed

未设置超时连接数

设置如上

过程中碰见其他博主遇见的问题【java.net.SocketException四大异常解决方案】,仅记录,参考链接

java.net.SocketException四大异常解决方案_一生挚爱妹子的博客-CSDN博客_java.net.socketexception

https://www.csdn.net/tags/MtTaEg0sOTIzNjY2LWJsb2cO0O0O.htmlhttps://www.csdn.net/tags/MtTaEg0sOTIzNjY2LWJsb2cO0O0O.html

标签: 压力测试

本文转载自: https://blog.csdn.net/MaNaiLing/article/details/125296862
版权归原作者 MaNaiLing 所有, 如有侵权,请联系我们删除。

“jemeter压测中所遇报错-connect”的评论:

还没有评论