论坛首页 综合技术论坛

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

浏览 10178 次
精华帖 (2) :: 良好帖 (17) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2010-03-25   最后修改:2010-03-31
调整/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让参数生效
   发表时间:2010-03-29  
不错, 不过, 好像少了几个。
net.ipv4.tcp_syncookies 是为了防止一定程度上的DOD的, 还有和他相关的几个参数。
另外, 根据业务数据, 可以设当调整发送/接受缓冲,
   net.ipv4.tcp_tw_recycle = 1   不是很建议设置,可能接受错误的数据, 你可以设置   1. net.ipv4.tcp_fin_timeout = 1 就可以了。
0 请登录后投票
   发表时间:2010-03-31   最后修改:2010-03-31
欢迎补充,
这些网络参数并非固定的,
根据系统的不同,可能设置不同

我的TIME_WAIT相对来说特别的多
修改之前是264057
修改之后是89160

0 请登录后投票
   发表时间:2010-04-01  
奔跑的羚羊 写道
欢迎补充,
这些网络参数并非固定的,
根据系统的不同,可能设置不同

我的TIME_WAIT相对来说特别的多
修改之前是264057
修改之后是89160




这么多? 已经严重影响你的系统性能了,一般到了5000就严重影响性能了。  为什么不使用长连接来做?
net.ipv4.tcp_fin_timeout = 1 是你最佳的选择了!
0 请登录后投票
   发表时间:2010-04-01  
理想的状态是在申请一到多台服务器,使用DNS轮询,
可惜没有机器,只能尽可能的优化了

这台机器只是跑了nginx,
链接是来自大量网友的访问,几乎都是不同的ip,
需要的是短链接,读取完数据后能尽快的断掉链接
而且希望资源能尽快的释放


0 请登录后投票
   发表时间:2010-04-02  
net.ipv4.tcp_fin_timeout = 1 是你最佳的选择了!
赶紧测试看看:)
0 请登录后投票
   发表时间:2010-04-04   最后修改:2010-04-04
测试后发现,修改前后,没有太大的变化!



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,应该会有明显改善?
可是测试的效果却几乎没有改善
  • 大小: 37.8 KB
0 请登录后投票
   发表时间:2010-04-06  
sdh5724 写道
不错, 不过, 好像少了几个。
net.ipv4.tcp_syncookies 是为了防止一定程度上的DOD的, 还有和他相关的几个参数。
另外, 根据业务数据, 可以设当调整发送/接受缓冲,
   net.ipv4.tcp_tw_recycle = 1   不是很建议设置,可能接受错误的数据, 你可以设置   1. net.ipv4.tcp_fin_timeout = 1 就可以了。


请问,除了调整TCP握手方面的,不谈网络连接方面,还可以调整什么降低负载呢?
0 请登录后投票
   发表时间:2010-04-07  
你这个是调整 apach??
0 请登录后投票
   发表时间:2010-04-08  
putonyuer 写道
你这个是调整 apach??


LINUX ETC。。
0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics