zoukankan      html  css  js  c++  java
  • Cannot assign requested address (connect failed)

    压测时,应用服务器报错:Cannot assign requested address (connect failed)

    经检查,由于应用服务器,频繁发起http请求,由于每次连接都在很短的时间内结束,导致很多的TIME_WAIT,以至于用光了可用的端 口号,所以新的连接没办法绑定端口

    “Cannot assign requested address.”是由于linux分配的客户端连接端口用尽,无法建立socket连接所致,虽然socket正常关闭,但是端口不是立即释放,而是处于TIME_WAIT状态,默认等待60s后才释放。

    解决方法:

    1、程序中每次http请求完成后,关闭http连接

    finally{
    httpclient.getConnectionManager().shutdown();
    }

    2、调低端口释放后的等待时间,默认为60s,修改为15~30s

    sysctl -w net.ipv4.tcp_fin_timeout=30

    3、修改tcp/ip协议配置, 通过配置/proc/sys/net/ipv4/tcp_tw_resue, 默认为0,修改为1,释放TIME_WAIT端口给新连接使用

    sysctl -w net.ipv4.tcp_timestamps=1

    4、修改tcp/ip协议配置,快速回收socket资源,默认为0,修改为1

    sysctl -w net.ipv4.tcp_tw_recycle=1

    设置完应用服务器参数后,执行命令“sysctl -p”使参数生效

  • 相关阅读:
    安全预警-防范新型勒索软件“BlackRouter”
    线程入门
    线程状态
    支付开发总结
    springboot处理date参数
    函数接口
    Excel通用类工具(一)
    Excel通用类工具(二)
    spring bean生命周期
    springboot整合netty(二)
  • 原文地址:https://www.cnblogs.com/zxgaa/p/9318647.html
Copyright © 2011-2022 走看看