开发者社区> 问答> 正文

为什么使用MSE后客户端突然出现大量TIME_WAIT堆积?

在使用MSE,客户端突然出现大量的TIME_WAIT堆积,但是使用自建Nacos却没有。

展开
收起
保持可爱mmm 2020-03-28 23:11:05 657 0
1 条回答
写回答
取消 提交回答
  • 可能原因 客户端通过短连接链接SLB(服务器),而且客户端是连接的主动关闭方,同时并发比较大。 如果使用MSE之前客户端没有TIME_WAIT堆积,而使用MSE后产生堆积,那么在访问模式不变的情况下,极有可能在使用MSE之前客户端存在TIME_WAIT socket的快速回收或复用,那么可能是如下几个TCP内核参数问题: net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_timestamps = 1 通过抓包查出由于引入SLB产生,SLB删除了TCP Option中的timestamps字段。 解决方案 对于没有TCP timestamp信息的客户端,需要将TCP长连接替换短链接。

    说明 在解决问题问题时,对于TIME_WAIT还需要关注如下如下几个限制条件: 源端口数量 (net.ipv4.ip_local_port_range) TIME_WAIT bucket 数量 (net.ipv4.tcp_max_tw_buckets) 文件描述符数量 (max open files) 如果TIME_WAIT数量离源端口数量、TIME_WAIT bucket 数量和文件描述符数量的阈值较远,那么可以忽略该问题。

    2020-03-28 23:13:17
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
《MSE 微服务网关》 立即下载
微服务引擎 MSE 治理中心重磅发布 立即下载
阿里云微服务引擎 MSE 2.0 线上发布 立即下载