近期因为疫情的原因,公司做了一个抢口罩的页面。需要对页面及接口做压力测试,遂遇到标题的问题。

原因:windows提供给TCP/IP链接的端口为 1024-5000,并且要四分钟来循环回收它们,就导致我们在短时间内跑大量的请求时将端口占满了,导致如上报错。
解决办法(在jmeter所在服务器操作):
1.cmd中输入regedit命令打开注册表;
2.在 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters右键Parameters;
3.添加一个新的DWORD,名字为MaxUserPort;
4.然后双击MaxUserPort,输入数值数据为65534,基数选择十进制;
5.完成以上操作,务必重启机器。
通过上述方式后,重新执行一次脚本。问题得到较好的解决,但是当循环次数和并发量上去之后,依旧存在该情况,遂找公司大神询问后,添加如下配置:
TcpNumConnections = 16777214
MaxHashTableSize = 65536
MaxFreeTcbs = 16000
TcpTimedWaitDelay = 30
相关值解析
MaxUserPort:最大动态端口数(Default = 5000, Max = 65534)
TcpTimedWaitDelay:TCP等待延迟时间(30)
TcpNumConnections:TCP最

本文介绍了在进行jmeter压力测试时遇到的'java.net.BindException: Address already in use: connect'错误和'java.net.SocketTimeoutException: Read timed out'问题。通过调整Windows注册表中的MaxUserPort值和JMeter配置文件,解决了端口占用问题。对于SocketTimeoutException,通过修改JMeter的httpclient4.idletimeout和启用连接检查解决了超时问题。

1570

被折叠的 条评论
为什么被折叠?



