开发者社区> 问答> 正文

开启负载均衡SLB后ECS存在大量TIMEWAIT的内网80端口连接

如题, 这是什么原因?

展开
收起
2013-11-30 21:23:09 16128 0
7 条回答
写回答
取消 提交回答
  • Re开启负载均衡SLB后ECS存在大量TIMEWAIT的内网80端口连接
    负载均衡默认会抹除 tcp 连接的 timestamp 属性,linux协议栈的 tw_reuse(time_wait 状态连接复用)无法生效,time_wait 状态连接堆积导致客户端端口不足

    解决方法:

    客户端端使用长连接代替短连接。

    使用 RST 报文断开连接(socket 设置 SO_LINGER 属性) ,而不是发 FIN 包这种方式断开。
    2016-09-06 19:30:45
    赞同 展开评论 打赏
  • Re开启负载均衡SLB后ECS存在大量TIMEWAIT的内网80端口连接
    解决了嘛
    2016-08-07 18:36:23
    赞同 展开评论 打赏
  • Re开启负载均衡SLB后ECS存在大量TIMEWAIT的内网80端口连接
    这个问题有解决吗, 我们也注意到了大量sLB健康检查导致的TIME_WAIT连接
    2016-01-21 11:11:02
    赞同 展开评论 打赏
  • 不要这样设置啊,会有问题的!
    不要这样设置:
    net.ipv4.tcp_timestamps = 1
    net.ipv4.tcp_tw_reuse = 1
    net.ipv4.tcp_tw_recycle = 1
    这样会导致局域网访问的用户可能失败。

    给一份我的线上配置:
    fs.nr_open = 5242880
    fs.file-max = 4194304
    kernel.core_uses_pid = 1
    kernel.msgmax = 1048560
    kernel.msgmnb = 1073741824
    kernel.shmall = 4294967296
    kernel.shmmax = 68719476736
    kernel.sysrq = 0
    net.core.netdev_max_backlog = 1048576
    net.core.rmem_default = 2097152
    net.core.rmem_max = 16777216
    net.core.somaxconn = 1048576
    net.core.wmem_default = 2097152
    net.core.wmem_max = 16777216
    net.ipv4.conf.default.accept_source_route = 0
    net.ipv4.conf.default.rp_filter = 1
    net.ipv4.ip_forward = 1
    net.ipv4.ip_local_port_range = 1024    65533
    net.ipv4.neigh.default.gc_thresh1 = 10240
    net.ipv4.neigh.default.gc_thresh2 = 40960
    net.ipv4.neigh.default.gc_thresh3 = 81920
    net.nf_conntrack_max = 819200
    net.netfilter.nf_conntrack_max = 819200
    net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60
    net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120
    net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120
    net.ipv4.tcp_fin_timeout = 10
    net.ipv4.tcp_keepalive_intvl = 15
    net.ipv4.tcp_keepalive_probes = 5
    net.ipv4.tcp_keepalive_time = 30
    net.ipv4.tcp_max_orphans = 3276800
    net.ipv4.tcp_max_syn_backlog = 1048576
    net.ipv4.tcp_max_tw_buckets = 60000
    net.ipv4.tcp_mem = 94500000 915000000 927000000
    net.ipv4.tcp_orphan_retries = 3
    net.ipv4.tcp_reordering = 5
    net.ipv4.tcp_retrans_collapse = 0
    net.ipv4.tcp_retries2 = 5
    net.ipv4.tcp_rmem = 4096        87380   4194304
    net.ipv4.tcp_sack = 0
    net.ipv4.tcp_synack_retries = 1
    net.ipv4.tcp_syncookies = 0
    net.ipv4.tcp_syn_retries = 1
    net.ipv4.tcp_timestamps = 0
    net.ipv4.tcp_tw_recycle = 0
    net.ipv4.tcp_tw_reuse = 1
    net.ipv4.tcp_window_scaling = 1
    net.ipv4.tcp_wmem = 4096        16384   4194304
    net.ipv6.conf.all.disable_ipv6 = 1
    net.ipv6.conf.default.disable_ipv6 = 1
    vm.swappiness = 0
    net.ipv4.tcp_low_latency = 1
    2014-12-26 12:53:14
    赞同 展开评论 打赏
  • Re开启负载均衡SLB后ECS存在大量TIMEWAIT的内网80端口连接
    我也遇到这个问题了,不知道如何解决

    开启负载均衡SLB后ECS会存在大量TIMEWAIT的内网80端口连接(几秒内升到2W预设值),不知道如何解决,不走SLB通过另一个ECS压力测试时,仅会出现极少量(低于500)的TIMEWAIT

    ECS的sysctl.conf配置如下:

    net.ipv4.ip_forward = 0
    net.ipv4.conf.all.rp_filter = 0
    net.ipv4.conf.default.rp_filter = 0
    net.ipv4.conf.default.accept_source_route = 0
    kernel.sysrq = 0
    kernel.core_uses_pid = 1
    kernel.msgmnb = 65536
    kernel.msgmax = 65536
    kernel.shmmax = 68719476736
    kernel.shmall = 4294967296
    net.ipv4.neigh.default.gc_stale_time = 120
    net.ipv4.conf.default.arp_announce = 2
    net.ipv4.conf.all.arp_announce = 2
    net.ipv4.conf.lo.arp_announce = 2

    net.ipv4.tcp_fin_timeout = 30
    net.ipv4.tcp_keepalive_time = 300
    net.ipv4.tcp_syncookies = 1

    net.ipv4.tcp_timestamps = 1
    net.ipv4.tcp_tw_reuse = 1
    net.ipv4.tcp_tw_recycle = 1

    net.ipv4.ip_local_port_range = 1024 65000
    net.ipv4.tcp_max_tw_buckets = 20000
    net.core.somaxconn = 81920
    net.core.netdev_max_backlog = 81920
    net.ipv4.tcp_max_syn_backlog = 81920
    net.ipv4.tcp_synack_retries = 3
    net.ipv4.tcp_max_orphans = 3276800
    net.ipv4.tcp_no_metrics_save = 1
    net.ipv4.tcp_sack = 1
    net.ipv4.tcp_window_scaling = 1

    压力测试命令为:

    ab -k -c10000 -n400000 url

    -------------------------

    Re开启负载均衡SLB后ECS存在大量TIMEWAIT的内网80端口连接
    目前SLB服务器的机器访问ECS全部采用的是http 1.0短链接协议,而真实用户访问SLB时采用的是http 1.1,经过SLB服务器中转之后变为了http 1.0,我猜这是导致大量TIME_WAIT的一个主要原因!
    2014-09-02 12:33:39
    赞同 展开评论 打赏
  • Re开启负载均衡SLB后ECS存在大量TIMEWAIT的内网80端口连接
    果然
    2013-12-01 10:10:14
    赞同 展开评论 打赏
  • 是不是健康检查啊?
    2013-11-30 21:40:55
    赞同 展开评论 打赏
滑动查看更多
问答排行榜
最热
最新

相关电子书

更多
如何运维千台以上游戏云服务器 立即下载
网站/服务器取证 实践与挑战 立即下载
ECS计算与存储分离架构实践 立即下载