压测过程中并发逐步加大后遇到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_range
32768 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