Linux系统应对短连接提高负载能力的解决方法

运维 系统运维
计算机用户舍弃微软,开始应用于是很多人开始应用Linux操作系统,学习Linux时,学习Linux,你可能会遇到Linux系统应对短连接的负载能力问题,这里将介绍Linux系统应对短连接的负载能力的解决方法。

计算机用户舍弃微软,开始应用于是很多人开始应用Linux操作系统,学习Linux时,学习Linux,你可能会遇到Linux系统应对短连接的负载能力问题,这里将介绍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里面,有下面的行:

  1. #define TCP_TIMEWAIT_LEN (60*HZ) /* how long to wait to destroy TIME-WAIT  
  2. * state, about 60 seconds */ 

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

  1. #define TCP_TIMEWAIT_LEN (10*HZ) /* how long to wait to destroy TIME-WAIT  
  2. * state, about 60 seconds */ 

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

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

一般情况都可以至少减少2/3。也能相应提高系统应对短连接的速度。以上就是如何进行Linux系统应对短连接的负载能力介绍。

【编辑推荐】

  1. 全面解析Linux集群技术的要点
  2. LifeKeeper又一款Linux服务器集群软件
  3. 讲解Linux服务器集群技术
  4. 详解保护Linux服务器七步骤
  5. 全面介绍Linux配置ntop
责任编辑:小霞 来源: pchome
相关推荐

2012-05-15 09:46:37

监听

2009-01-15 09:48:00

网络连接连接故障

2013-04-10 15:30:42

2011-08-22 15:39:38

Linux

2009-12-18 15:28:19

Linux内核

2010-10-19 10:25:29

SQL Server连

2010-11-16 16:07:32

oracle用户连接

2010-11-08 16:16:57

SQL Server远

2010-10-19 12:22:02

SQL Server远

2012-08-15 14:01:18

2009-10-28 08:31:02

Vsftpd服务器故障

2009-10-28 09:49:32

linux Vsftp

2010-01-18 10:19:04

FreeBSDroot密码

2011-09-19 19:21:54

linux

2011-07-05 09:44:31

QT Mysql 乱码

2010-10-22 14:35:02

sql server系

2010-04-07 13:11:01

Unix操作系统

2010-10-20 17:21:07

连接SQL Serve

2020-06-08 11:10:14

云计算智慧城市人工智能

2010-06-21 09:54:50

Linux Aplay
点赞
收藏

51CTO技术栈公众号