zoukankan      html  css  js  c++  java
  • net.ipv4.tcp_tw_recycle导致的请求超时

    背景:线上环境登录页,大量请求超时无响应。检查网正常,服务器CPU,内存等参数也都正常。

    参考:https://www.jianshu.com/p/893b5d7e9f30

    原因:服务器启用了net.ipv4.tcp_tw_recycle机制

    当开启了tcp_tw_recycle选项后,当连接进入TIME_WAIT状态后,会记录对应远端主机最后到达分节的时间戳。如果同样的主机有新的分节到达,且时间戳小于之前记录的时间戳,即视为无效,相应的数据包会被丢弃;

    一个公网IP(经过NAT)大量地去反问服务器,不同客户端的时间可能不一致,所以就会出现时间戳错乱的现象,于是后面的数据包就被丢弃了,具体的表现通常是是客户端明明发送的SYN,但服务端就是不响应ACK,还可以通过下面命令来确认数据包不断被丢弃的现象;

    • 查看主机TCP连接数
    • netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

    解决:

    net.ipv4.tcp_tw_recycle = 0
    net.ipv4.tcp_timestamps = 0

  • 相关阅读:
    《Java多线程编程核心技术》——多线程与同步
    《垃圾回收的算法与实现》——Python垃圾回收
    命令提示符
    clip
    explorer
    dotnet 命令启动报错
    Superfetch/SysMain
    Windows
    Windows 系统授权服务信息
    Windows 命令
  • 原文地址:https://www.cnblogs.com/wanhua-wu/p/10130276.html
Copyright © 2011-2022 走看看