linux社区爱心援助Linux认证系列教程业界动态站务新闻公司招聘建议留言网址大全LPI专题CISCO专题
设为首页
加入收藏
管理团队
JSP  
JAVA  
PERL  
 您的位置:首页 > article > linux网络与应用 > 网络应用 >
栏目导栏
资料搜索
热门文章
·RedHat Linux9 iptables配置方
·Linux网络服务配置文件详解
·SSH使用指南
·如何用IPtables限制BT、电驴等
·用Xmanager远程管理LINUX,AIX
·linux上的 heartbeat 双机热备
·iptables设置一例
·RedHat做ADSL共享上网代理服务
·虚拟网络计算工具VNC使用指南
·使用Linux L2TP/IPsec VPN 服务
·在linux路由上设置IP和MAC绑定
·车干子的openldap的详细配置
·十步建立Linux VPN服务器
·构筑防火墙之IPtables搭建防火
·linux主要系统服务介绍
最新文章
·Ubuntu 8.04下搭建tftp开发dav
·初次远程做Linux Iptables规则
·Debian Linux系统Socks5服务器
·在Linux系统下享受IPv6的畅快
·查看Linux操作系统下的网络连接
·图形界面远程登录 基于NX技术F
·Linux操作系统下Xmanager工具登
·RHCE实验:Linux下基于xinetd的
·解决Linux Telnet登录慢问题
·实用技巧:Linux下用Samba作PD
·Ubuntu Linux下Azureus NAT设置
·宿主机WindowsXP与虚拟机Linux
·Linux系统下SSH keygen免输入密
·Redhat AS5 Squid透明代理配置
·Debian Linux系统下VPN Server
Google
 
如何提高Linux系统应对短连接的负载能力
[ 作者:  加入时间:2008-04-10 10:08:17  来自: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) /* how long to wait to destroy TIME-WAIT

* state, about 60 seconds */

而这个宏是真正控制 TCP TIME_WAIT 状态的超时时间的。如果我们希望减少 TIME_WAIT 状态的数目(从而节省一点点内核操作时间),那么可以把这个数值设置低一些,根据我们的测试,设置为 10 秒比较合适,也就是把上面的修改为:

#define TCP_TIMEWAIT_LEN (10*HZ) /* how long to wait to destroy TIME-WAIT

* state, about 60 seconds */

然后重新编译内核,重启系统即可发现短连接造成的TIME_WAIT状态大大减少:

netstat -ant | grep -i time_wait |wc -l

一般情况都可以至少减少2/3。也能相应提高系统应对短连接的速度。

Linux联盟收集整理 ,转贴请标明原始链接,如有任何疑问欢迎来本站Linux论坛讨论
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
无相关信息