Let's Go!

高负载系统,网络参数调整(转载)

上一篇 / 下一篇  2011-11-09 18:31:11 / 个人分类:系统相关&实用技巧

参考:http://niyunjiu.iteye.com/blog/731404

Linux内核 tcp/ip 调优:

net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 300
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.ip_local_port_range = 5000 65000
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.tcp_max_syn_backlog = 2048
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 2

参考:
#kernel.shmmax=67108864
#vm.min_free_kbytes = 65536
#vm.swappiness = 0
#net.core.rmem_max = 33554432
#net.core.wmem_max = 33554432
#net.core.netdev_max_backlog =  2500
#net.core.somaxconn = 262144
#net.ipv4.ip_local_port_range = 5000  65000
net.ipv4.tcp_max_syn_backlog = 2048
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 2
#net.ipv4.tcp_tw_recycle = 0
#net.ipv4.tcp_tw_reuse = 1
#net.ipv4.tcp_rmem = 4096 16384 33554432
#net.ipv4.tcp_wmem = 4096 16384 33554432
#net.ipv4.tcp_mem = 786432 1048576 26777216
#net.ipv4.tcp_keepalive_time = 300
#net.ipv4.tcp_fin_timeout = 30
#net.ipv4.tcp_max_tw_buckets =360000
#net.ipv4.tcp_max_orphans =32768
#net.ipv4.tcp_window_scaling =1
#net.ipv4.tcp_timestamps =1
#net.ipv4.tcp_rfc1337 =1

 

参考:高负载系统,网络参数调整

http://www.iteye.com/topic/624598

调整/etc/sysctl.conf

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


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


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

net.ipv4.tcp_fin_timeout = 30
表示如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间。

net.ipv4.tcp_keepalive_time = 1200
表示当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是2小时,改为20分钟。

net.ipv4.ip_local_port_range = 1024 65000
表示用于向外连接的端口范围。缺省情况下很小:32768到61000,改为1024到65000。

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


如果高负载系统使用了netfilter/iptables,调整以下参数
  

net.ipv4.ip_conntrack_max = 655360
在内核内存中netfilter可以同时处理的“任务”(连接跟踪条目)


net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 180
跟踪的连接超时结束时间


然后执行/sbin/sysctl -p让参数生效

 

===========================================================

 

 

1.TCP连接的一方A发起终止请求,并更为FIN-WAIT-1状态。
2.另一方B接受请求,并向返回确认,并更为CLOSE_WAIT
3.当A接受到B返回的确认后,状态由FIN-WAIT-1变为FIN-WAIT-2
4.A进入FIN-WAIT-2的定时器,这个时间就是由net.ipv4.tcp_fin_timeout设置的

5.B会再次向A发送终止请求,并变更为LAST-ACT
6.A接受请求,并向B返回确认,变更为TIME-WAIT
7.B接受到A返回的确认后,关闭连接,变更为CLOSED
8.A进入TIME-WAIT的定时器,超时后,连接终止,变更为CLOSED
此时TCP连接正式关闭


net.ipv4.tcp_fin_timeout设置的是FIN-WAIT-2状态的时间。
如果FIN-WAIT-2超时,是不是就可以直接跳过5-8,即状态跳过TIME-WAIT,直接CLOSED?

如果是这样,理论上说,设置为1,应该会有明显改善?
可是测试的效果却几乎没有改善


TAG:

 

评分:0

我来说两句

Open Toolbar