Linux系统的几个重要内核参数

 

如下是在/etc/sysctl.conf文件中配置的几个重要内核参数,这几个参数的设置关系到系统性能:缓存

一、net.ipv4.tcp_syncookies
#此参数应该设置为1,防止SYN Flood
处在SYN_RECV的TCP链接称为半链接,存储在SYN队列。大量SYN_RECV会致使队列溢出,后续请求将被内核直接丢弃,也就是SYN Flood攻击。开启syncookies后,当SYN队列满了后,TCP会经过原地址端口,目的地址端口和时间戳打造一个特别的Sequence Number(又叫cookie发回去,若是是攻击者则不会有响应,若是是正常链接则把这个SYNCookie发回来,而后服务器端能够经过cookie创建链接(即便不在SYN队列)。安全

二、net.ipv4.tcp_fin_timeout
#此参数默认值60TCP保持在FIN_WAIT2状态的时间,超时后直接处于CLOSED,因此下降tcp_fin_timeout有助于减小TIME_WAIT数量。注意:虽然shutdown(SHUD_WR)也会处于FIN_WAIT2状态,但超时并不起做用。服务器

三、net.ipv4.tcp_tw_recycle
#此参数默认值0,打开快速TIME_WAIT socket回收。
若是tcp_timestamps开启的话,会缓存每一个链接的最新时间戳,若是后续请求时间戳小于缓存的时间戳,即视为无效,相应的包被丢弃。因此若是是在NAT(Network Address Translation)网络下,就可能出现数据包丢弃的现象,会致使大量的TCP链接创建错误。cookie

四、net.ipv4.tcp_tw_resue
#此参数默认值0,是否重用TIME_WAIT状态的socket用于新的链接。
这个选项要比net.ipv4.tcp_tw_recycle安全,从协议的角度看,复用是安全的。复用条件:
1)net.ipv4.tcp_timestamps选项必须打开(客户端也必须打开) ;
2)  重用TIME_WAIT的条件是收到最后一个包后超过1秒;网络

五、net.ipv4.tcp_keepalive_time = 1200
#此参数表示TCP发送keepalive探测消息的间隔时间(秒),用于确认TCP链接是否有效。当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是2小时,可改成20分钟。socket

相关文章
相关标签/搜索