Jmeter 线程报错 Non HTTP response code: org.apache.http.conn.HttpHostConnectException/Non HTTP response message: Connect to x failed: Connection timed out

背景

跑压测,100用户并发,10s启动,跑5min,发现有报超时,报错信息如下:

Non HTTP response code: org.apache.http.conn.HttpHostConnectException/Non HTTP response message: Connect to 10.1.27.3:8887 [\/10.1.27.3] failed: Connection timed out: connect

问题原因

jmeter在windows跑的,服务器端是Linux,linux分配给客户端连接的端口不够用。

解决方法

1、先查看 Linux 服务端支持的端口范围:
cat /proc/sys/net/ipv4/ip_local_port_range
2、修改端口释放后的等待时间,原默认是60s,修改为30s
echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout
3、修改tcp/ip协议配置 tcp_tw_recycle :是否开启快带回收TIME_WAIT tcp连接的功能,快速回收socket资源, 默认为0否, 修改为1是。
echo 1 > /proc/sys/net/ipv4/tcp_tw_recycle
4、tcp_tw_resue 是否可以使用TIME_WAIT tcp连接用于建立新的tcp连接,默认为0否, 修改为1是
echo 1 > /proc/sys/net/ipv4/tcp_tw_reuse