内核编辑升级(1).docx_第1页
内核编辑升级(1).docx_第2页
内核编辑升级(1).docx_第3页
内核编辑升级(1).docx_第4页
内核编辑升级(1).docx_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Linux 内核参数修改,减少TCP连接中的TIME-WAIT:Linux系统下,TCP/IP连接断开后,会以TIME_WAIT状态保留一定的时间,然后才会释放端口。当并发请求过多的时候,就会产生大量的 TIME_WAIT状态的连接,无法及时断开的话,会占用大量的端口资源和服务器资源(因为关闭后进程才会退出)。这个时候可以考虑优化TCP/IP 的内核参数,来及时将TIME_WAIT状态的端口清理掉。这里只对拥有大量TIME_WAIT状态的连接导致系统资源消耗有效,不是这个原因的情况下,效果可能不明显。使用netstat命令查TIME_WAIT状态的连接。输入一个复核命令,去查看当前TCP/IP连接的状态和对应的个数:# netstat -an | awk /tcp/ +s$NF END for(a in s) print a, sa这个命令会显示出类似下面的结果:TIME_WAIT 63648FIN_WAIT1 3FIN_WAIT2 4ESTABLISHED 184LISTEN 17TIME_WAIT的个数,在这里可以看到,有6w多个TIME_WAIT,这样就占用了6w多个端口。要知道端口的数量只有65535个,占用一个少一个,会严重的影响到后继的新连接。这种情况下要调整下Linux的TCP/IP内核参数,让系统更快的释放 TIME_WAIT连接。用vim打开配置文件:# vim /etc/sysctl.conf然后,在这个文件中,加入下面的几行内容:net.ipv4.tcp_syncookies = 1net.ipv4.tcp_tw_reuse = 1net.ipv4.tcp_tw_recycle = 1net.ipv4.tcp_fin_timeout = 5最后输入下面的命令,让内核参数生效:# /sbin/sysctl -p简单的说明下,上面的参数的含义:net.ipv4.tcp_syncookies = 1 表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭;net.ipv4.tcp_tw_reuse = 1 表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;net.ipv4.tcp_tw_recycle = 1 表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭;net.ipv4.tcp_fin_timeout 修改系统默认的 TIMEOUT 时间。在经过这样的调整之后,除了会进一步提升服务器的负载能力之外,还能够防御一定程度的DDoS、CC和SYN攻击,是个一举两得的做法。此外,如果连接数本身就很多,可以再优化一下TCP/IP的可使用端口范围,进一步提升服务器的并发能力。依然是往上面的参数文件中,加入下面这些配置:net.ipv4.tcp_keepalive_time = 1200net.ipv4.ip_local_port_range = 10000 65000net.ipv4.tcp_max_syn_backlog = 8192net.ipv4.tcp_max_tw_buckets = 5000这几个参数,建议只在流量非常大的服务器上开启,会有显著的效果。一般的流量小的服务器上,没有必要去设置这几个参数。这几个参数的含义如下:net.ipv4.tcp_keepalive_time = 1200 表示当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是2小时,改为20分钟。net.ipv4.ip_local_port_range = 10000 65000 表示用于向外连接的端口范围。缺省情况下很小:32768到61000,改为10000到65000。(注意:这里不要将最低值设的太低,否则可能会占用掉正常的端口!)net.ipv4.tcp_max_syn_backlog = 8192 表示SYN队列的长度,默认为1024,加大队列长度为8192,可以容纳更多等待连接的网络连接数。net.ipv4.tcp_max_tw_buckets = 5000 表示系统同时保持TIME_WAIT的最大数量,如果超过这个数字,TIME_WAIT将立刻被清除并打印警告信息。默认为180000,改为5000。上几行的参数可以很好地减少TIME_WAIT套接字数量,此项参数可以控制TIME_WAIT的最大数量,服务器被大量的TIME_WAIT拖死。经过这样的配置之后服务器的TCP/IP并发能力又会上一个新台阶。在存在大量短连接的情况下,Linux的TCP栈一般都会生成大量的 TIME_WAIT 状态的socket。# 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状态,但是这个说法不是很准确的。而内核中真正管用的是一个宏定义,在 内核目录下/include/net/tcp.h里面,有下面的行:#define TCP_TIMEWAIT_LEN (60*HZ)而这个宏是真正控制 TCP TIME_WAIT 状态的超时时间的。如果减少 TIME_WAIT 状态的数目(从而节省一点点内核操作时间),那么可以把这个数值设置低一些,可以设置为 5-10 秒或者根据自己的需求来设置,也就是把上面的修改为:#define TCP_TIMEWAIT_LEN (5*HZ)然后重新编译内核,重启系统即可发现短连接造成的TIME_WAIT状态减少:netstat -ant | grep -i time_wait |wc l内核编辑和升级:1:内核下载地址,这里内核编辑采用的linux-2.6.39内核wget /pub/linux/kernel/v2.6/linux-2.6.39.tar.xz yum groupinstall Development Tools # 安装编译时所需的一切工具yum install hmaccalc zlib-devel binutils-devel elfutils-libelf-devel ncurses-devel gcc gcc-c+ #创建 CentOS-6 内核时需要2:解压linux-2.6.39内核到/usr/src/目录下tar linux-2.6.39.tar.xz -C /usr/src/3:查看现有系统的内核版本rootbogon # uname -r2.6.32-358.el6.x86_644开始内核编辑mrproper #清除环境变量,即清除配置文件make menuconfig #在菜单模式下选择需要编译的内核模块General setup -features - 选项* Enable loadable module support -选项-*- Enable the block layer -选项IO Schedulers -选项Processor type and features -选项Processor family (Generic-x86-64) -选项Power management and ACPI options -选项* ACPI (Advanced Configuration and Power Interface) Support -选项CPU Frequency scaling -选项Bus options (PCI etc.) -选项Executable file formats / Emulations -选项-*- Networking support -选项Networking options -m support -选项配置如下: Data Center Bridging support 把这项取消,其他选项保留Device Drivers -这个选项暂时可以默认,如果有需可以根据需要编辑后面的选项选

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论