浏览 10178 次
锁定老帖子 主题:高负载系统,网络参数调整
精华帖 (2) :: 良好帖 (17) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-03-25
最后修改:2010-03-31
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让参数生效 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2010-03-29
不错, 不过, 好像少了几个。
net.ipv4.tcp_syncookies 是为了防止一定程度上的DOD的, 还有和他相关的几个参数。 另外, 根据业务数据, 可以设当调整发送/接受缓冲, net.ipv4.tcp_tw_recycle = 1 不是很建议设置,可能接受错误的数据, 你可以设置 1. net.ipv4.tcp_fin_timeout = 1 就可以了。 |
|
返回顶楼 | |
发表时间:2010-03-31
最后修改:2010-03-31
欢迎补充,
这些网络参数并非固定的, 根据系统的不同,可能设置不同 我的TIME_WAIT相对来说特别的多 修改之前是264057 修改之后是89160 |
|
返回顶楼 | |
发表时间:2010-04-01
奔跑的羚羊 写道 欢迎补充,
这些网络参数并非固定的, 根据系统的不同,可能设置不同 我的TIME_WAIT相对来说特别的多 修改之前是264057 修改之后是89160 这么多? 已经严重影响你的系统性能了,一般到了5000就严重影响性能了。 为什么不使用长连接来做? net.ipv4.tcp_fin_timeout = 1 是你最佳的选择了! |
|
返回顶楼 | |
发表时间:2010-04-01
理想的状态是在申请一到多台服务器,使用DNS轮询,
可惜没有机器,只能尽可能的优化了 这台机器只是跑了nginx, 链接是来自大量网友的访问,几乎都是不同的ip, 需要的是短链接,读取完数据后能尽快的断掉链接 而且希望资源能尽快的释放 |
|
返回顶楼 | |
发表时间:2010-04-02
net.ipv4.tcp_fin_timeout = 1 是你最佳的选择了!
赶紧测试看看:) |
|
返回顶楼 | |
发表时间: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,应该会有明显改善? 可是测试的效果却几乎没有改善 |
|
返回顶楼 | |
发表时间:2010-04-06
sdh5724 写道 不错, 不过, 好像少了几个。
net.ipv4.tcp_syncookies 是为了防止一定程度上的DOD的, 还有和他相关的几个参数。 另外, 根据业务数据, 可以设当调整发送/接受缓冲, net.ipv4.tcp_tw_recycle = 1 不是很建议设置,可能接受错误的数据, 你可以设置 1. net.ipv4.tcp_fin_timeout = 1 就可以了。 请问,除了调整TCP握手方面的,不谈网络连接方面,还可以调整什么降低负载呢? |
|
返回顶楼 | |
发表时间:2010-04-07
你这个是调整 apach??
|
|
返回顶楼 | |
发表时间:2010-04-08
putonyuer 写道 你这个是调整 apach??
LINUX ETC。。 |
|
返回顶楼 | |