centos中,内核优化。适合用于优化WEB服务器等TCP/IP连接多的服务器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了centos中,内核优化。适合用于优化WEB服务器等TCP/IP连接多的服务器相关的知识,希望对你有一定的参考价值。

这个参数表示操作系统允许TIME_WAIT套接字数量的最大值,如果超过这个数字,TIME_WAIT套接字将立刻被清除并打印警告信息。默认180000,过多TIME_WAIT套接字会使Web服务器变慢。
net.ipv4.tcp_max_tw_buckets = 1000

缺省值为1,使用 Selective ACK﹐它可以用来查找特定的遗失的数据报--- 因此有助于快速恢复状态。
net.ipv4.tcp_sack = 1

该文件表示设置tcp/ip会话的滑动窗口大小是否可变。参数值为布尔值,为1时表示可变,为0时表示不可变。
net.ipv4.tcp_window_scaling = 1

这个参数定义了TCP接受缓存(用于TCP接收滑动窗口)的最小值,默认值,最大值。
net.ipv4.tcp_rmem = 4096 8388608 16777216

这个参数定义了TCP发送缓存(用于TCP发送滑动窗口)的最小值,默认值,最大值。
net.ipv4.tcp_wmem = 4096 8388608 16777216

表示SYN队列的长度,默认为1024,加大队列长度为65536,可以容纳最多等待连接的网络连接数。
net.ipv4.tcp_max_syn_backlog = 65536

当网卡接收数据包的速度大于内核处理的速度时,会有一个队列保存这些数据包。这个参数表示该队列的最大值。默认是1000
net.core.netdev_max_backlog = 32768

listen()的默认参数,挂起请求的最大数量.默认是128.对繁忙的服务器,增加该值有助于网络性能.可调整到8192.
net.core.somaxconn = 65535

这个参数表示内核套接字接收缓存区默认的大小。
net.core.wmem_default = 8388608

net.core.rmem_default = 8388608
这个参数表示内核套接字(socket)读缓存区(buffer)默认的最大大小。
net.core.rmem_max = 16777216

这个参数表示内核套接字(socket)写缓存区(buffer)默认的最大大小。
net.core.wmem_max = 16777216

在近端丢弃TCP连接之前﹐要进行多少次重试。默认值是7个﹐相当于 50秒 - 16分钟﹐视 RTO 而定。如果您的系统是负载很大的web服务器﹐那么也许需要降低该值﹐这类 sockets 可能会耗费大量的资源
net.ipv4.tcp_orphan_retries = 3

该文件表示是否启用以一种比超时重发更精确的方法(请参阅 RFC 1323)来启用对 RTT 的计算;为了实现更好的性能应该启用这个选项。缺省值为1
net.ipv4.tcp_timestamps = 1

减少处于FIN-WAIT-2连接状态的时间,使系统可以处理更多的连接。
如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间。
对端可以出错并永远不关闭连接,甚至意外当机,缺省值是60秒。
2.2 内核的通常值是180秒,你可以按这个设置,但要记住的是,即使你的机器是一个轻载的WEB服务器,也有因为大量的死套接字而内存溢出的风险,FIN-WAIT-2的危险性比FIN-WAIT-1要小,因为它最多只能吃掉1.5K内存,但是它们的生存期长些。
net.ipv4.tcp_fin_timeout = 20

减少系统SYN连接重试次数(默认是5);为了打开对端的连接,内核需要发送一个SYN并附带一个回应前面一个SYN的ACK。也就是所谓三次握手中的第二次握手。这个设置决定了内核放弃连接之前发送SYN+ACK包的数量。
net.ipv4.tcp_synack_retries = 2

在内核放弃建立连接之前发送SYN包的数量。
net.ipv4.tcp_syn_retries = 2

表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭。
net.ipv4.tcp_syncookies = 1

表示开启TCP连接中TIME-WAIT sockets的快速收回功能,默认为 0 ,表示关闭。
net.ipv4.tcp_tw_recycle = 1

表示开启重用。允许将TIME-WAIT sockets重新用于新的 TCP 连接,默认为 0 表示关闭。
net.ipv4.tcp_tw_reuse = 1

系统所能处理不属于任何进程的TCP sockets最大数量。假如超过这个数量,那么不属于任何进程的连接会被立即reset,并同时显示警告信息。之所以要设定这个限制,纯粹为了抵御那些简单的 DoS 攻击,千万不要依赖这个或是人为的降低这个限制。缺省设置:8192
net.ipv4.tcp_max_orphans = 65535

个参数定义了在UDP和TCP连接中本地端口的取值范围,即允许系统打开的端口范围。表示用于向外连接的端口范围。缺省情况下很小:32768到61000
net.ipv4.ip_local_port_range = 1024 65000

secure config

关闭重定向。如果主机所在的网络有多个路由器,你将其中一个设为缺省网关,但该网关在收到你的ip包时,发现该ip包必须经过另外一个路由器,于是该网关就給你的主机发一个“重定向”的icmp包,告诉主机把包转发到另外一个路由器。1表示主机接受这样的重定向包,0表示忽略;linux默认是1,可以设位0以消除隐患。
net.ipv4.conf.default.secure_redirects=0
net.ipv4.conf.default.accept_redirects=0
net.ipv4.conf.all.accept_redirects=0
net.ipv4.conf.all.send_redirects=0
net.ipv4.conf.default.send_redirects=0
net.ipv4.conf.all.secure_redirects=0
net.ipv4.conf.all.rp_filter=1
net.ipv4.conf.default.rp_filter=1

IPv6设置
net.ipv6.conf.all.accept_ra=0
net.ipv6.conf.default.accept_ra=0
net.ipv6.conf.all.accept_redirects=0
net.ipv6.conf.default.accept_redirects=0

另外附上一份完整版的sysctl.conf
net.ipv4.tcp_max_tw_buckets = 1000
net.ipv4.tcp_sack = 1
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_rmem = 4096 8388608 16777216
net.ipv4.tcp_wmem = 4096 8388608 16777216
net.ipv4.tcp_max_syn_backlog = 65536
net.core.netdev_max_backlog = 32768
net.core.somaxconn = 65535
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_orphan_retries = 3
net.ipv4.tcp_timestamps = 1
net.ipv4.tcp_fin_timeout = 20
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 2
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_max_orphans = 65535
net.ipv4.ip_local_port_range = 1024 65000

net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1

NET.IPV4.TCP_SYNCOOKIES = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296

以上是关于centos中,内核优化。适合用于优化WEB服务器等TCP/IP连接多的服务器的主要内容,如果未能解决你的问题,请参考以下文章

Linux服务器内核参数优化(适合Apache,Nginx,Squid等多种web应用)

centos内核参数性能优化

Linux(Centos )的网络内核参数优化来提高服务器并发处理能力

Linux(Centos )的网络内核参数优化来提高服务器并发处理能力

linux内核高级优化脚本

基于Nginx实现10万+并发,你应该做的Linux内核优化