JMeter默认无请求超时限制,若服务器响应慢或网络延迟高,易导致SocketTimeoutException: connect timed out或Read timed out错误。需通过HTTP Request Defaults组件统一设置超时:
旧版本JMeter可能存在连接稳定性问题(如2.9版本易卡死)。建议升级至JMeter 2.13及以上版本(推荐最新稳定版),新版本修复了连接超时、线程管理等问题,提升压测可靠性。
若压测中出现大量TIME_WAIT状态的端口(通过netstat -nat|grep -i 8080|wc -l查看,数值接近65535),会导致端口无法复用,引发BindException: Address already in use或连接超时:
TIME_WAIT时间:
regedit→HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters;MaxUserPort(十进制,设为65334);TcpTimedWaitDelay(十进制,设为30);connectionTimeout设为-1,表示长连接),避免每次请求都创建新连接。ping <服务器IP>检查压测机与服务器之间的网络是否可达;telnet <服务器IP> <端口>(如telnet 192.168.1.100 8080)验证目标端口是否开放;firewalld),需放行JMeter使用的端口(如8080):firewall-cmd --zone=public --add-port=8080/tcp --permanent # 开放端口
firewall-cmd --reload # 重新加载防火墙规则
若为CentOS 6,使用iptables放行端口。jmeter.properties中的remote_hosts参数,指定执行机IP)。连接超时可能是服务器端处理能力不足导致(如数据库查询慢、接口逻辑复杂):
top、vmstat等命令查看服务器CPU、内存使用情况;catalina.out)是否有慢查询、异常堆栈;503 Service Unavailable,说明服务器已过载,需优化接口性能或扩容服务器资源。若上述方法无效,可修改JMeter的jmeter.properties文件(位于bin目录)优化连接行为:
httpclient4.retrycount=1(重试次数,设为1可减少重复请求);httpclient4.idletimeout=5000(空闲连接超时,设为5000毫秒);#httpclient4.time_to_live=60000的注释(连接存活时间,设为60000毫秒),避免连接过早关闭。