这个问题很有意思,因为我经常想知道自己.我做了几次测试,发现了一些有趣的结果.如果我打开一个连接到服务器并等待60秒,它总是被清理(从未达到0.00 / 0/0).如果我打开100个连接,他们也会在60秒后清理干净.如果我打开101个连接,我会开始看到你所说的州的连接(我之前也见过).无论fin_timeout设置为什么,它们似乎持续大约120s或2xMSL(即60).我在内核源代码中进行了一些挖掘,发现了我认为的“原因”.似乎有一些代码试图限制每个’周期’发生的套接字收割量.循环频率本身基于HZ设置:

linux-source-2.6.38/include/net/inet_timewait_sock.h:

35 #define INET_TWDR_RECYCLE_SLOTS_LOG 5

36 #define INET_TWDR_RECYCLE_SLOTS (1 << INET_TWDR_RECYCLE_SLOTS_LOG)

37

38 /*

39 * If time > 4sec,it is "slow" path,no recycling is required,40 * so that we select tick to get range about 4 seconds.

41 */

42 #if HZ <= 16 || HZ > 4096

43 # error Unsupported: HZ <= 16 or HZ > 4096

44 #elif HZ <= 32

45 # define INET_TWDR_RECYCLE_TICK (5 + 2 - INET_TWDR_RECYCLE_SLOTS_LOG)

46 #elif HZ <= 64

47 # define INET_TWDR_RECYCLE_TICK (6 + 2 - INET_TWDR_RECYCLE_SLOTS_LOG)

48 #elif HZ <= 128

49 # define INET_TWDR_RECYCLE_TICK (7 + 2 - INET_TWDR_RECYCLE_SLOTS_LOG)

50 #elif HZ <= 256

51 # define INET_TWDR_RECYCLE_TICK (8 + 2 - INET_TWDR_RECYCLE_SLOTS_LOG)

52 #elif HZ <= 512

53 # define INET_TWDR_RECYCLE_TICK (9 + 2 - INET_TWDR_RECYCLE_SLOTS_LOG)

54 #elif HZ <= 1024

55 # define INET_TWDR_RECYCLE_TICK (10 + 2 - INET_TWDR_RECYCLE_SLOTS_LOG)

56 #elif HZ <= 2048

57 # define INET_TWDR_RECYCLE_TICK (11 + 2 - INET_TWDR_RECYCLE_SLOTS_LOG)

58 #else

59 # define INET_TWDR_RECYCLE_TICK (12 + 2 - INET_TWDR_RECYCLE_SLOTS_LOG)

60 #endif

61

62 /* TIME_WAIT reaping mechanism. */

63 #define INET_TWDR_TWKILL_SLOTS 8 /* Please keep this a power of 2. */

The number of slots is also set here:

65 #define INET_TWDR_TWKILL_QUOTA 100

在实际的timewait代码中,你可以看到它使用引号停止杀掉TIME_WAIT连接的位置,如果它已经做了太多:

linux-source-2.6.38/net/ipv4/inet_timewait_sock.c:

213 static int inet_twdr_do_twkill_work(struct inet_timewait_death_row *twdr,214 const int slot)

215 {

...

240 if (killed > INET_TWDR_TWKILL_QUOTA) {

241 ret = 1;

242 break;

243 }

这里有更多关于为什么HZ被设置为它的信息:

http://kerneltrap.org/node/5411但增加它并不罕见.然而,我认为通常更常见的是启用tw_reuse / recycle来绕过这个桶/配额机制(现在看来我已经读过这个让我很困惑,增加HZ将是一个更安全和更清洁的解决方案).我发布了这个作为答案,但我认为可以在这里更多地讨论解决它的“正确方法”是什么.谢谢你有趣的问题!

linux清除time_wait状态,linux – 超时期限到期后未清除TIME_WAIT连接相关推荐

  1. linux 网络端口状态,Linux下用netstat查看网络状态、端口状态(转)

    转:http://blog.csdn.net/guodongdongnumber1/article/details/11383019 在linux一般使用netstat 来查看系统端口使用情况步. n ...

  2. linux显示内存状态,Linux显示内存状态

    Linux显示内存状态 youhaidong@youhaidong-ThinkPad-Edge-E545:~$ free total used free shared buffers cached M ...

  3. Linux程序文件状态,linux 文件状态标识和IO操作方式

    转自:http://book.2cto.com/201212/11767.html 来自<UNIX/Linux程序设计教程> 文件状态标签指明文件的打开属性,它们由open()的flags ...

  4. Linux 短链timeout状态,Linux命令——timeout

    Linux命令--timeout 命令简介 运行指定的命令,如果在指定时间后仍在运行,则杀死该进程.用来控制程序运行的时间. 使用方法 timeout [选项] 数字[后缀] 命令 [参数]...1 ...

  5. linux 获取phy状态,Linux PHY几个状态的跟踪

    https://blog.csdn.net/subfate/article/details/44900665 前面文章零零星星地分析了PHY,本来想完整地,系统地做分析,发现工程量太大了,而自己又一知 ...

  6. linux进程状态d状态,Linux下进程的状态

    如下信息来自于命令man ps Here are the different values that the s, stat and state output specifiers (header & ...

  7. linux进程状态d状态,linux – 进程永久停留在D状态

    我有一个问题,在Ubuntu 10.04.3 LTS上陷入D状态的某些进程. 自11月5日(今天是12月6日)以来,他们一直处于这种状态.我知道这些是不间断的睡眠状态,通常与等待来自硬盘等硬件的数据有 ...

  8. linux jetty 查看 状态,linux jetty 状态

    由于java.security.SecureRandom在linux上依赖于/dev/random (linux随机数生成机制参见这里),因此在出现问题的服务器上运行测试程序后运行测试脚本,结果如下: ...

  9. linux关闭established状态,Linux大量异常ESTABLISHED TCP连接问题排查

    最近在工作中遇到一个关于TCP/IP中连接异常的问题,加深了对与TCP/IP整套机制的理解.在此,进行分享希望对遇到同样问题的朋友有所帮助. TCP连接异常问 工作上一个服务端程序,对外提供短连接RP ...

最新文章

  1. 【LeetCode OJ】Remove Duplicates from Sorted List
  2. 15款最好的网站音乐播放器
  3. 构造函数未定义_构造函数(constructor)和观察者模式,谁略胜一筹呢?
  4. Ffmpeg 定位文件(seek file)
  5. springboot工具类
  6. linux 关闭桌面环境,Ubuntu 14.04上的Cinnamon桌面环境PPA被关闭
  7. Linux笔记-为操作系统配ntp服务地址(适用达梦操作系统)
  8. linux下安装zmap和zgrab
  9. aspupload ,在winows server 2008 下无法使用
  10. 社会工程学攻击案例-网站钓鱼
  11. TensorFlow 从入门到精通(13)—— NLP初探:电影评论感情分析
  12. 手动开启/关闭macOS HiDPI,让2k显示器完美适配macOS,解决紫屏问题
  13. 汇编 二进制拆炸弹 r -t 3 -x 124
  14. 苹果摆脱对中国制造的依赖?iPhone14的拆解结果显示恰恰相反,更离不开中国制造了...
  15. NNDL 作业3:分别使用numpy和pytorch实现FNN例题
  16. RAM、ROM、FLASH的存储原理及区别
  17. CToolBar的使用总结(转1)
  18. JAVA看云判断天气_怎样看云判断天气变化?
  19. 如果你打算将游戏业务外包 那么这篇文章你就不得不看!
  20. linux - 守护进程

热门文章

  1. 芯片破壁者(五):Acorn和ARM所发现的移动时代
  2. 【每日早报】2019/11/25
  3. Ubuntu16.04菜单栏出现两个输入法图标的解决办法
  4. 2022施工升降机司机(建筑特殊工种)操作证考试题库及在线模拟考试
  5. vue 大小端,十六进制转十进制
  6. 关于phpStudy 中Apache 80端口被占用问题
  7. 彩色小铅笔的跳跃与喘息
  8. MVC中@Html.Partial,@Html.Action,@Html.RenderPartial,@Html.RenderAction区别
  9. java jxl使用_java创建excel示例(jxl使用方法)
  10. java jxl 解析excel,java使用jxl解析Excel