【问题标题】:JMeter : java.net.NoRouteToHostException: Cannot assign requested address (Address not available)JMeter:java.net.NoRouteToHostException:无法分配请求的地址(地址不可用)
【发布时间】: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 处于打开状态。

【问题讨论】:

    标签: java performance spring-boot jmeter load-testing


    【解决方案1】:

    您可以关注Lakshmi Narayan answer增加可用端口:

    分辨率:

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

    echo 1024 65000 > /proc/sys/net/ipv4/ip_local_port_range

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

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

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

    默认情况下,

    cat /proc/sys/net/ipv4/tcp_tw_recycle

    输出:0(默认禁用)

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

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

    $ 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 框加载。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-25
    • 2021-11-03
    • 2013-08-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多