码迷,mamicode.com
首页 > 系统相关 > 详细

linux内核调优

时间:2017-10-23 18:13:24      阅读:245      评论:0      收藏:0      [点我收藏+]

标签:内核调优

文件路径:/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

(默认值7200TCP发送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*16syn flood攻击利用TCP协议散布握手的缺陷,伪造虚假源IP地址发送大量TCP-SYN半打开连接到目标系统。为了应付这种攻击,现代Uinx系统中普遍采用多连接队列处理的方式来缓冲(而不是解决)这种攻击,是用一听歌基本队列处理正常的完全连接应用(connect()和accept()),是用另一个队列单独存放半打开连接。这种双队列处理方式和其他一些系统内核措施(例如synCookies/Caches)联合应用时,能够比较有效的缓解小规模的SYN Flood攻击(事实证明)

net.ipv4.tcp_max_tw_buckets = 36000

(默认值18000,系统在同时所处理的最大timewait sockets数目。如果超过此数的话,timewait 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

(默认值120time_wait状态超时时间,超过该时间就清除该连接)

net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait = 60

(默认值60close_wait状态超时时间,超过该时间就清除该连接)

net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait = 120

(默认值120fin_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


linux内核调优

标签:内核调优

原文地址:http://11412359.blog.51cto.com/11402359/1975266

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!