Linux下高并发的Squid服务器,TCP TIME_WAIT套接字数量经常达到两、三万,服务器很容易被拖死。通过修改Linux内核参数,可以减少Squid服务器的TIME_WAIT套接字数量。
  
vi /etc/sysctl.conf

  增加以下几行:
引用
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.ip_local_port_range = 1024    65000
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_max_tw_buckets = 5000

  说明:
  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,可以容纳更多等待连接的网络连接数。
  net.ipv4.tcp_max_tw_buckets = 5000 表示系统同时保持TIME_WAIT套接字的最大数量,如果超过这个数字,TIME_WAIT套接字将立刻被清除并打印警告信息。默认为180000,改为5000。对于Apache、Nginx等服务器,上几行的参数可以很好地减少TIME_WAIT套接字数量,但是对于Squid,效果却不大。此项参数可以控制TIME_WAIT套接字的最大数量,避免Squid服务器被大量的TIME_WAIT套接字拖死。

  执行以下命令使配置生效:
/sbin/sysctl -p
Tags: , , ,
纯粹技术 | 评论(12) | 引用(0) | 阅读(1132)
zhiqin Homepage
2008-4-14 13:01
您好,我想申请您BLOG的一个友情连接
您的连接我已经添加 编号为103

以下是我的信息:
地址:Http://Zhiqin.32o.Cn
名称:不许联想
说明:不许联想
 
 希望能通过,谢谢!
ideawu Homepage
2008-4-14 17:46
关注. 你现在在哪工作了?
test
2008-4-14 18:16
关注
同问
xooass Email Homepage
2008-4-14 20:25
请问如果普通服务器也使用以上的参数  会不会有副作用呢?
simon
2008-4-15 03:17
其实 对于高负荷服务器
有少许优化
效果 不是特别好
johnzw
2008-4-15 09:40
貌似这几万的time wait里真实的等待连接并不多吧,我估计有很大一部分应该是废连接,没有收到FIN请求。本地对外端口感觉 2w就可以了,太多没什么大的意义吧,SYN队列长度不是越大越好,增大内存开销。其实还是要看系统每秒能处理完多少个tcp session,然后适当调整SYN。
wf
2008-4-15 13:57
有些笼统, 区分TIME_WAIT和半连接洪水攻击是有必要的.
steven
2008-4-15 17:36
你好,想请教一个问题,我现在有十几台linux 服务器。有什么好的方法能统一管理这些服务器的系统日志
张宴 回复于 2008-4-15 18:09
是Web服务器的访问日志吗?
niu
2008-4-17 01:21
to steven:
系统日志 ? syslog
dd_macle
2008-4-18 11:43
现在每天养成习惯了,都要来这里学习学习。。。。。
cnhawk Homepage
2008-4-22 19:05
net.ipv4.tcp_max_tw_buckets = 5000
这个参数值得商讨一下吧
等于系统只有5000个timewait的空位,可是稍微繁忙点系统这个数值就过了
张宴 回复于 2008-5-8 13:00
一般情况下,可以增加到20000或30000,再高系统可能会被拖死。
sbear Homepage
2008-5-7 18:12
好像改这个参数没用的,要去改内核代码重新编译才行,这个内核参数改完没效果的。
分页: 1/1 第一页 1 最后页
发表评论
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
记住我
昵称   密码   游客无需密码
网址   电邮   [注册]