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:无法分配请求的地址(地址不可用)的主要内容,如果未能解决你的问题,请参考以下文章

Jmeter

jmeter学习视频

jmeter——录制jmeter脚本

Jmeter文章索引贴

Jmeter使用流程及简单分析监控(jmeter性能测试)

Jmeter使用流程及简单分析监控(jmeter性能测试)