压测过程中并发逐步加大后遇到60%的错误率,查看错误是JMeter网页版聚合报告中显示

Non HTTP response code: java.net.NoRouteToHostException/Non HTTP response message: Cannot assign requested address (Address not available)

这是第二次遇到,故把解决方案记录下来,供大家参考

1、先检查下tcp port range 是否在合理范围内

cat/proc/sys/net/ipv4/ip_local_port_range32768 60999

1024 65535为centos合理范围,不合理则需要作出修改

2、调低端口释放后的等待时间, 默认为60s, 修改为15~30s

echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout

3、修改tcp/ip协议配置, 通过配置/proc/sys/net/ipv4/tcp_tw_resue, 默认为0, 修改为1, 释放TIME_WAIT端口给新连接使用。

echo 1 > /proc/sys/net/ipv4/tcp_tw_reuse

3. 修改tcp/ip协议配置,快速回收socket资源, 默认为0, 修改为1.(这个根据系统来设置,可能有的系统没有这个文件)

echo 1 > /proc/sys/net/ipv4/tcp_tw_recycle

4、执行命令使设置立即生效

sysctl -p