Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1061753
  • 博文数量: 321
  • 博客积分: 7872
  • 博客等级: 少将
  • 技术积分: 2120
  • 用 户 组: 普通用户
  • 注册时间: 2007-05-16 09:06
文章分类

全部博文(321)

文章存档

2017年(1)

2016年(1)

2015年(12)

2014年(17)

2013年(78)

2012年(15)

2011年(17)

2010年(67)

2009年(102)

2008年(11)

分类: LINUX

2010-07-14 11:47:19

#一台Nginx+php-fcgi的服务器做了负载均衡,在主控端发现一直在报错:
#—————————-引用文字-开始—————————-
Apr 19 14:48:38 chengyongxu.com kernel: TCP: time wait bucket table overflow
Apr 19 14:48:44 chengyongxu.com kernel: printk: 137 messages suppressed.
Apr 19 14:48:44 chengyongxu.com kernel: TCP: time wait bucket table overflow
Apr 19 14:48:52 chengyongxu.com kernel: printk: 251 messages suppressed.
Apr 19 14:48:52 chengyongxu.com kernel: TCP: time wait bucket table overflow
Apr 19 14:48:53 chengyongxu.com kernel: printk: 51 messages suppressed.
Apr 19 14:48:53 chengyongxu.com kernel: TCP: time wait bucket table overflow
Apr 19 14:48:59 chengyongxu.com kernel: printk: 119 messages suppressed.
#—————————-引用文字-结束—————————-

#再看80端口连接状态
netstat -an | grep 80 | awk ‘{print $6}’ | sort | uniq -c | sort -rn
#—————————-引用文字-开始—————————-
4202 TIME_WAIT
30 FIN_WAIT1
9 ESTABLISHED
5 SYN_RECV
4 LISTEN
4 FIN_WAIT2
4 CLOSING
2 CONNECTED
2
#—————————-引用文字-结束—————————-

#根据报错提示,需要更改net.ipv4.tcp_max_tw_buckets这个内核参数。这个参数是系统同时保持timewait套接字的最大数量。如果超过这个数字,time-wait套接字将立刻被清除并打印警告信息。这个限制仅仅是为了防止简单的 DoS攻击,你绝对不能过分依靠它或者人为地减小这个值,如果网络实际需要大于缺省值,更应该增加这个值(如果增加了内存之后)。

vi /etc/sysconfig/sysctl.conf
#—————————-引用文字-开始—————————-
#找到:
net.ipv4.tcp_max_tw_buckets = 6000
#改为
net.ipv4.tcp_max_tw_buckets = 10000
#—————————-引用文字-结束—————————-
#保存并打印设置
sysctl -p

#再看80端口连接状态
netstat -an | grep 80 | awk ‘{print $6}’ | sort | uniq -c | sort -rn
#—————————-引用文字-开始—————————-
5928 TIME_WAIT
42 FIN_WAIT1
14 ESTABLISHED
10 FIN_WAIT2
6 CLOSING
4 SYN_RECV
4 LISTEN
2 CONNECTED
2
#—————————-引用文字-结束—————————-
netstat -an | grep 80 | awk ‘{print $6}’ | sort | uniq -c | sort -rn
#—————————-引用文字-开始—————————-
5510 TIME_WAIT
34 FIN_WAIT1
9 SYN_RECV
9 ESTABLISHED
7 FIN_WAIT2
6 CLOSING
4 LISTEN
2 CONNECTED
2
#—————————-引用文字-结束—————————-
netstat -an | grep 80 | awk ‘{print $6}’ | sort | uniq -c | sort -rn
#—————————-引用文字-开始—————————-
5687 TIME_WAIT
38 FIN_WAIT1
16 ESTABLISHED
10 SYN_RECV
6 FIN_WAIT2
6 CLOSING
4 LISTEN
2 CONNECTED
2
#—————————-引用文字-结束—————————-
netstat -an | grep 80 | awk ‘{print $6}’ | sort | uniq -c | sort -rn
#—————————-引用文字-开始—————————-
5688 TIME_WAIT
38 FIN_WAIT1
19 ESTABLISHED
9 SYN_RECV
6 FIN_WAIT2
6 CLOSING
4 LISTEN
2 CONNECTED
2
#—————————-引用文字-结束—————————-

#再看/var/log/messages和dmesg的信息,已经不再报错了,看来net.ipv4.tcp_max_tw_buckets=10000暂时是够用了

阅读(1073) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~