net.ipv4.tcp_fin_timeout的错误理解
2024-09-26 11:30:20
按照文档的说法,貌似长久以来我对于tcp_fin_timeout的理解都是错误的
先备份在这里,再验证
提高Linux应对短连接的负载能力
在存在大量短连接的情况下,Linux的TCP栈一般都会生成大量的 TIME_WAIT
状态的socket。你可以用下面的命令看到:
netstat -ant| grep -i time_wait
有时候,这个数目是惊人的:
netstat -ant|grep -i time_wait |wc -l
可能会超过三四万。这个时候,我们需要修改 linux kernel 的 tcp time wait的时间,缩短之,有个 sysctl
参数貌似可以使用,它是 /proc/sys/net/ipv4/tcp_fin_timeout,缺省值是
60,也就是60秒,很多网上的资料都说将这个数值设置低一些就可以减少netstat
里面的TIME_WAIT状态,但是这个说法是错误的。经过认真阅读Linux的内核源代码,我们发现这个数值其实是输出用的,修改之后并没有真正的读回内核中进行使用,而内核中真正管用的是一个宏定义,在
$KERNEL/include/net/tcp.h里面,有下面的行:
#define TCP_TIMEWAIT_LEN (60*HZ)
而这个宏是真正控制 TCP TIME_WAIT 状态的超时时间的。如果我们希望减少 TIME_WAIT
状态的数目(从而节省一点点内核操作时间),那么可以把这个数值设置低一些,根据我们的测试,设置为 10 秒比较合适
最新文章
- python实现网络爬虫下载天涯论坛帖子
- 检索COM类工厂中CLSID为{00024500-0000-0000-C000-000000000046}的组件时失败
- npm 加速方案
- 附7 turbine
- Scala 深入浅出实战经典 第47讲:Scala多重界定代码实战及其在Spark中的应用
- asp.net 捕获全局未处理异常的几种方法
- Home-brew 安装&;卸载 Git
- http://www.cnblogs.com/huangcong/archive/2010/06/14/1757957.html
- C语言指针5分钟教程
- 怎样在osg中动态的设置drawable的最近最远裁剪面
- TabbarItem超炫小动画
- where条件的lambda转化为sql语句
- 004_Python之all()\any()
- eclipse+pyDev
- Tomcat:在centos中做成自启动服务
- 【Espruino】NO.07 获取电压值
- CH4302 Interval GCD
- docker 创建容器的时候的坑
- 征战jQuery
- Vue初步认识