JMeter:java.net.NoRouteToHostException:无法分配请求的地址(地址不可用)
Posted
技术标签:
【中文标题】JMeter:java.net.NoRouteToHostException:无法分配请求的地址(地址不可用)【英文标题】:JMeter : java.net.NoRouteToHostException: Cannot assign requested address (Address not available) 【发布时间】:2018-11-07 12:04:40 【问题描述】:我创建了一个带有 HelloController 的简单 Spring Boot 应用程序。
Get API: http://localhost:8080/hello
Response: Hello World
现在我创建了一个有 10 万并发用户访问上述获取 API 的 JMeter 脚本。 当我运行 JMeter 脚本时,计数 30k 后,我开始收到错误:
java.net.NoRouteToHostException: Cannot assign requested address (Address not available)
这是什么原因?我该如何解决这个问题?
我使用的是 8GB RAM 的 UBUNTU 18.04。 执行操作时,只有 JMeter 和 STS 处于打开状态。【问题讨论】:
【参考方案1】:您可以关注Lakshmi Narayan answer增加可用端口:
分辨率:
使用以下命令增加了本地端口范围:
echo 1024 65000 > /proc/sys/net/ipv4/ip_local_port_range
这允许更多本地端口可用。
启用快速回收 TIME_WAIT 套接字,如下所示:
$ sudo sysctl -w net.ipv4.tcp_tw_recycle=1
默认情况下,
cat /proc/sys/net/ipv4/tcp_tw_recycle
输出:0(默认禁用)
如果在生产环境中启用,请谨慎,因为这是我们的 内部环境和机器仅用于 Jmeter 负载测试,我们 启用回收并解决了问题。
启用套接字重用,如下所示:
$ sudo sysctl -w net.ipv4.tcp_tw_reuse=1
默认情况下,
cat /proc/sys/net/ipv4/tcp_tw_reuse
输出:0(默认禁用)
注意:tcp_tw_reuse 设置在环境中特别有用 许多短连接打开并处于 TIME_WAIT 状态, 比如网络服务器。重用套接字可以非常有效地 减少服务器负载。
启用快速回收和重用后,服务器可以支持 5K 用户使用单个 Unix 框加载。
【讨论】:
net.ipv4.tcp_tw_recycle
已成为removed from Linux 4.12.以上是关于JMeter:java.net.NoRouteToHostException:无法分配请求的地址(地址不可用)的主要内容,如果未能解决你的问题,请参考以下文章