网络优化参数

网络优化参数:缓存

net.ipv4.tcp_max_tw_buckets
timewait的数量,默认为8192;安全

net.ipv4.ip_local_port_range = 1024 65000
容许系统打开的端口范围,前而为下限,后面的数字为上限;默认为“32768 61000”;
注意:此可用范围决定了最后timewait状态的链接的数量;下面的两项可有效下降tw状态链接的数量;服务器

net.ipv4.tcp_tw_recycle = {0|1}
是否启用timewait快速回收;注意:开启此功能在NAT环境下可能会出现严重的问题:由于TCP有一种行为,它能够缓存每一个链接最新的时间戳,后续请求中若是时间戳小于缓存中的时间戳,即被视为无效并丢弃相应的请求报文;Linux是否启用这种行为取决于tcp_timestamp和tcp_tw_recycle,而前一个参数默认是启用的,因此启用后面的参数就会激活此功能;
所以,若是是NAT环境,安全起见,应该禁用tcp_tw_recycle。另外一种解决方案:把tcp_timestamps设置为0,tcp_tw_recycle设置为1并不会如想象中奏效,由于一旦关闭了tcp_timestamps,那么即使打开了tcp_tw_recycle,后面的参数也没有效果。此时下降net.ipv4.tcp_max_tw_buckets的值就能够显著下降tw链接的数量了。cookie


net.ipv4.tcp_tw_reuse = {0|1}
是否开启tw重用,便是否容许将TIME-WAIT sockets 用于新的TCP链接;网络

net.ipv4.tcp_syncookies = {0|1}
是否开启SYN Cookies,即当SYN等待队列溢出时,是否启用cookies功能;socket

net.ipv4.tcp_timestamps = 0
tcp报文时间戳,关闭时能够避免序列号的卷绕,如上所述;tcp


net.ipv4.tcp_max_syn_backlog = 262144
保存的那些还没有收到客户端确认信息的链接请求的最大值;默认为128,可增大此值;优化


net.ipv4.tcp_synack_retries = #
为了打开对端的链接,内核须要发送一个SYN并附带一个回应前面一个SYN的ACK,这也即所谓的三次握手中的第二次;这个设置决定了内核放弃链接以前发送SYN+ACK 包的数量;繁忙的服务器上建议设置为0或者1;队列

net.ipv4.tcp_syn_retries = #
在内核放弃创建链接以前发送SYN包的数量;繁忙的服务器上建议设置为0或者1;ip

net.ipv4.tcp_max_orphans = 262144
系统中最多有多少个TCP套接字不被关联到任何一个用户文件句柄上;若是超过这个数字,孤儿链接将即刻被复位并打印出警告信息;
这个限制仅仅是为了防止简单的DoS 攻击,不能过度依靠它或者人为地减少这个值,若是须要修改,在确保有足够内存可用的前提下,应该增大此值;


net.ipv4.tcp_fin_timeout = 5
若是套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间;缺省值是60秒。
然而,对端可能会出错或意外宕机并永远不关闭链接。即便你的机器是一个轻载的WEB 服务器,也有由于大量的死套接字而内存溢出的风险,FIN-WAIT-2 的危险性比FIN-WAIT-1要小,由于每一个链接最多只能消耗1.5K内存,可是它们的生存期长些;

net.ipv4.tcp_keepalive_time = 30
当keepalive起用的时候,TCP发送keepalive消息的频度,默认是是2小时;

net.core.rmem_max=8388608
定义内核用于全部类型的链接的最大接收缓冲大小;

net.core.rmem_default=65536
定义内核用于全部类型的链接的默认接收缓冲大小;

net.core.wmem_max=8388608
定义内核用于全部类型的链接的最大发送缓冲大小;

net.core.wmem_default=65536
定义内核用于全部类型的链接的默认发送缓冲大小;

net.ipv4.tcp_mem='8388608 8388608 8388608'
定义TCP协议栈使用的内存空间;分别为最小值,默认值和最大值;

net.ipv4.tcp_rmem='4096 87380 8388608'
定义TCP协议栈用于接收缓冲的内存空间;第一个值为最小值,即使当前主机内存空间吃紧,也得保证tcp协议栈至少有此大小的空间可用;第二个值为默认值,它会覆盖net.core.rmem_default中为全部协议定义的接收缓冲的大小;第三值为最大值,即能用于tcp接收缓冲的最大内存空间;

net.ipv4.tcp_wmem='4096 65536 8388608' 定义TCP协议栈用于发送缓冲的内存空间;