标签:内核调优
文件路径:/etc/sysctl.conf
centos5系统
[root@www ~]# vi /etc/sysctl.conf
net.ipv4.tcp_fin_timeout = 2
(默认值60,对于本端断开的socket连接,TCP保持在FIN-WAIT-2状态的时间。对方可能会断开连接或一直不结束连接或不可预料的进程死亡)
net.ipv4.tcp_tw_reuse = 1
(默认值0,表示是否允许重新应用处于TIME-WAIT状态的socket用于新的TCP连接,这个对快速重启动某些服务,而启动后提示端口已经被使用的情形非常有帮助)
net.ipv4.tcp_tw_recycle = 1
(默认值0,打开快速TTIME-WAIT sockets回收。除非得到技术专家的建议或要求,请不要随意修改这个值,做NAT的时候,建议打开它)
net.ipv4.tcp_syncookies = 1
(默认值0,只有在内核编译时选择了CONFIG_SYNCOOKIES时才会发生作用。当出现syn等候队列出现溢出时向对方发送syncookies,目的是为了防止syn flood攻击)
net.ipv4.tcp_keepalive_time =600
(默认值7200,TCP发送keeplive探测消息的间隔时间,用于确认TCP连接是否有效,防止两边建立连接但不发送数据的攻击)
net.ipv4.ip_local_port_range = 4000 65000
(默认值32765 61000,表示用于向外连接的端口范围,默认比较小,这个范围同样会简介用于NAT表规模)
net.ipv4.tcp_max_syn_backlog = 16384
(默认值1024,对于那些依然还未获得客户端确认的连接请求,需要保存在队列中最大数目。对于超过128Mb内存的系统,默认值是1024,低于128Mb的则为128.如果服务器经常出现过载,可以尝试增加这个数字。警告!假如您将此值设为大于1024,最好修改include/net/tcp.h里面的TCP_SYNQ_HSIZE,以保持TCP_SYNQ_HSIZE*16(syn flood攻击利用TCP协议散布握手的缺陷,伪造虚假源IP地址发送大量TCP-SYN半打开连接到目标系统。为了应付这种攻击,现代Uinx系统中普遍采用多连接队列处理的方式来缓冲(而不是解决)这种攻击,是用一听歌基本队列处理正常的完全连接应用(connect()和accept()),是用另一个队列单独存放半打开连接。这种双队列处理方式和其他一些系统内核措施(例如syn—Cookies/Caches)联合应用时,能够比较有效的缓解小规模的SYN Flood攻击(事实证明)
net.ipv4.tcp_max_tw_buckets = 36000
(默认值18000,系统在同时所处理的最大timewait sockets数目。如果超过此数的话,time—wait socket会被立即砍除并且显示警告信息,之所以要设定这个限制,纯粹为了抵御那些简单的Dos攻击,不过,如果网络条件需要比默认值更多,则可以提高它(或许还要增加内存)(事实上做NAT的时候最好可以适当的增加该值))
net.ipv4.route.gc_timeout = 100
(默认值300,路由缓存刷新频率,当一个路由失败后多长时间跳到另一个路由)
net.ipv4.tcp_syn_retries = 1
(默认值5,对于一个新建连接,内核要发送多少个syn连接请求才决定放弃,不应该大于255,默认值是5,对应于180秒左右的时间,对于大负载而物理通信良好的网络而言,这个值偏高,可修改为2。这个值仅仅是针对对外的连接,对进来的连接,是由tcp_retries1决定的)
net.ipv4.tcp_synack_retries = 1
(默认值5,对于远端的连接请求syn,内核会发送syn+ack数据报,以确认收到上一个syn连接请求包。这是所谓的三次握手机制的第二个步骤。这里决定内核在放弃连接之前所送出的syn+ack数目,不应该大于255,默认值5,对应于189秒左右时间)
net.core.somaxconn = 16384
(默认值128,用来限制监听(LISTEN)队列最大数据包的数量,超过这个数量就会导致连接超时或者触发重传机制。web应用中listen函数的backlog默认会给我们内核参数的net.core.somaxconn限制到128,而nginx定义的NGX_LISTEN_BACKLOG默认为511,所以有必要调整这个值。对繁忙的服务器,增加该值有助于网络性能)
net.core.netdev_max_backlog = 16384
(默认值1024,每个网络接口接收数据包的速率比内核处理这些包速率快时,允许送到队列的数据包的最大数目,对重负载服务器而言,该值需要调高一些)
net.ipv4.tcp_max_orphans = 16384
(默认值8192,系统所能处理不属于任何进程的TCP sockets最大数量。假如超过这个数量,那么不属于任何进程的链接会被立即reset,并同时显示警告信息。只所以要设定这个限制,纯粹为了抵御那些简单的DoS攻击,千万不要依赖这个或是人为的降低这个限制。如果内存大更应该增加这个值。(这个值redhat AS版本中设置为32768,但是很多防火墙修改的时候,建议该值修改为2000))
#一下参数是对iptables防火墙的优化,防火墙不开会有提示,可以忽略不理。
net.ipv4.ip_conntrack_max = 25000000
(默认值65536,系统支持的最大ipv4链接数,默认65536(实时上这也是理论最大值),同时这个值和你的内存大小有关,如果内存128M,这个值最大8192,1g以上都是默认65536,这个值受/proc/sys/net/ipv4/ip_conntrack_max限制)
net.ipv4.netfilter.ip_conntrack_max = 25000000
net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 180
(默认值432000,已建立的tcp链接的超时时间,默认432000,也就是5天,影响:这个值过大将导致一些可能已经不用的链接常驻于内存中,占用大量链接资源,从而可能导致NAT ip_conntrack:table full的问题。建议:对于NAT负载相对本机NAT表大小很紧张的时候,可能需要考虑缩小这个值,以尽早清除连接,保证有可用的连接资源。如果不紧张,不必修改)
net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait = 120
(默认值120,time_wait状态超时时间,超过该时间就清除该连接)
net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait = 60
(默认值60,close_wait状态超时时间,超过该时间就清除该连接)
net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait = 120
(默认值120,fin_wait状态超时时间,超过该时间就清楚该连接)
[root@www ~]# sysctl –p #使配置文件生效
由于centos6系统中的模块名不是ip_conntrack,而是nf_conntrack,所以在/etc/sysctl.conf优化时,需要把net.ipv4.netfilter.ip_conntrack_max这种老参数,改成net.netfilter.nf_conntrack_max这样才行
centos6
net.nf_conntrack_max = 25000000
net.netfilter.nf_conntrack_max = 25000000
net.netfilter.nf_conntrack_tcp_timeout_established = 180
net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120
net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60
net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120
标签:内核调优
原文地址:http://11412359.blog.51cto.com/11402359/1975266