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”使参数生效

  • 相关阅读:
    洛谷 P4861 按钮
    《情人》
    bzoj1019: [SHOI2008]汉诺塔(dp)
    hdu5698瞬间移动(组合数,逆元)
    poj Code(组合数)
    组合数 牛顿二项式定理 杨辉三角
    8.22 NOIP 模拟题
    codevs2495 水叮当的舞步(IDA*)
    codevs 2541 幂运算(迭代加深搜索)
    较复杂搜索,剪枝
  • 原文地址:https://www.cnblogs.com/zxgaa/p/9318647.html
Copyright © 2011-2022 走看看