小编典典

JMeter:java.net.NoRouteToHostException:无法分配请求的地址(地址不可用)

spring-boot

我创建了一个具有HelloController的简单Spring Boot应用程序。

Get API: http://localhost:8080/hello
Response: Hello World

现在,我已经创建了一个JMeter脚本,该脚本具有10万个并发用户,并点击了上述get
API。当我运行JMeter脚本时,计数30k后,我开始收到错误消息:

java.net.NoRouteToHostException: Cannot assign requested address (Address not available)

这是什么原因呢?我该如何解决这个问题?

  • 我正在使用具有8GB RAM的UBUNTU 18.04。
  • 在执行操作时,仅JMeter和STS打开。

阅读 1609

收藏
2020-05-30

共1个答案

小编典典

您可以按照Lakshmi Narayan的答案来增加可用端口:

解析度:

  1. 使用以下命令增加本地端口范围:

回声1024 65000> / proc / sys / net / ipv4 / ip_local_port_range

这允许更多本地端口可用。

  1. 启用快速回收TIME_WAIT套接字,如下所示:

$ sudo sysctl -w net.ipv4.tcp_tw_recycle = 1

默认,

猫/ proc / sys / net / ipv4 / tcp_tw_recycle

输出:0(默认情况下禁用)

如果在生产环境中启用,请务必谨慎,因为这是我们的内部环境,并且仅用于Jmeter负载测试的机器,因此我们启用了回收并解决了该问题。

  1. 启用套接字的重用,如下所示:

$ sudo sysctl -w net.ipv4.tcp_tw_reuse = 1

默认,

猫/ proc / sys / net / ipv4 / tcp_tw_reuse

输出:0(默认情况下禁用)

注意:tcp_tw_reuse设置在打开许多短连接并使它们保持为TIME_WAIT状态的环境(例如Web服务器)中特别有用。重用套接字对于减少服务器负载非常有效。

在启用快速回收和重用之后,服务器可以通过单个Unix盒支持5K用户负载。

2020-05-30