前言
在性能测试中会常常遇到java.net.NoRouteToHostException: Can’t assign requested address (Address not available)这个问题,什么原因导致的呢?
这个原因不一定是服务器的原因,还可能是本机的问题。
一、问题报错
出现这个问题是由于liunx 分配的客户端连接端口用尽,无法建立socket连接所致,虽然socket正常关闭,但是端口不是立即释放,而是处于 TIME_WAIT 状态,默认等待60s后释放。

1、查看端口连接数量:netstat -nat | grep -i “TCP” | wc -l

2、查看linux支持的端口范围
cat /proc/sys/net/ipv4/ip_local_port_range

二、调优方案
1.扩大端口范围
修改注册表:计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip

当遇到Java性能测试中的NoRouteToHostException时,问题可能源于Linux客户端连接端口耗尽。通过检查端口使用情况和调整端口范围可以优化。增加MaxUserPort和缩短TcpTimedWaitDelay可以缓解问题。若仍报错,可能是目标服务器端口问题。调整端口范围和采用短连接是主要解决方案。
最低0.47元/天 解锁文章
3751

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



