博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WEB服务器TCP:time wait&nbsp…
阅读量:4045 次
发布时间:2019-05-24

本文共 1767 字,大约阅读时间需要 5 分钟。

WEB服务器TCP:time wait bucket table overflow报错排查
 
日志巡检发现,公司web服务器一直报错,信息如下:
 
Jul  
5 15:40:37 mail kernel: printk: 272 messages suppressed.
Jul  
5 15:40:37 mail kernel: TCP: time wait bucket table overflow
Jul  
5 15:40:37 mail kernel: TCP: time wait bucket table overflow
Jul  
5 15:40:43 mail kernel: printk: 92 messages suppressed.
Jul  
5 15:40:43 mail kernel: TCP: time wait bucket table overflow
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
(TCP:时间等待桶表)
 
 
www.2cto.com  
根据报错提示,需要更改net.ipv4.tcp_max_tw_buckets这个内核参数。这个参数是 同时保持timewait套接字的最大数量。如果超过这个数字,time-wait套接字将立刻被清除并打印警告信息。这个限制仅仅是为了防止简单的 DoS攻击,你绝对不能过分依靠它或者人为地减小这个值,如果网络实际需要大于缺省值,更应该增加这个值(如果增加了内存之后)。
解决方法:增大 tcp_max_tw_buckets的值,并不是这个值越小越好,我看了我系统中TIME_WAIT 大部是由php-fpm产生的,是属于正常的现象
 
系统在同时所处理的最大timewait sockets 数目。如果超过此数的话﹐time-wait socket 会被立即砍除并且显示警告信息。之所以要设定这个限制﹐纯粹为了抵御那些简单的 DoS 攻击﹐千万不要人为的降低这个限制﹐不过﹐如果网络条件需要比默认值更多﹐则可以提高它(或许还要增加内存)。
 
netstat -an | grep 9000 | awk '{print $6}' | sort | uniq -c | sort -rn
netstat -an | grep 80| awk '{print $6}' | sort | uniq -c | sort -rn
 
www.2cto.com  
排查步骤:
 
1. 查看服务器网络连接情况;
 
[root@mail ~]#  
netstat -pant |awk '/^tcp/ {++state[$6]} END {for(key in state) printf("%-10s\t%d\n",key,state[key]) }'
TIME_WAIT  
 
 
4944
CLOSE_WAIT  
 
 
1
FIN_WAIT1  
 
 
93
FIN_WAIT2  
 
 
66
ESTABLISHED  
 
292
SYN_RECV  
 
 
 
29
CLOSING  
 
 
 
32
LAST_ACK  
 
 
 
9
LISTEN  
 
 
 
 
14
[root@mail ~]#
 
www.2cto.com  
2.查看内核参数
vi /etc/sysctl.conf
 
将net.ipv4.tcp_max_tw_buckets = 5000
 
改为:net.ipv4.tcp_max_tw_buckets = 10000
 
3.使更改的内核参数生效
sysctl -p
 
4. 再次查看服务器网络连接情况;
 
[root@mail ~]#  
netstat -pant |awk '/^tcp/ {++state[$6]} END {for(key in state) printf("%-10s\t%d\n",key,state[key]) }'
TIME_WAIT  
 
 
6644 
CLOSE_WAIT  
 
 
1
FIN_WAIT1  
 
 
93
FIN_WAIT2  
 
 
66
ESTABLISHED  
 
292
SYN_RECV  
 
 
 
29
CLOSING  
 
 
 
32
LAST_ACK  
 
 
 
9
LISTEN  
 
 
 
 
14
 
5.
#再看/var/log/messages和dmesg的信息,已经不再报错了,看来net.ipv4.tcp_max_tw_buckets=10000暂时是够用了
 
www.2cto.com  
6.原因
 
 
 
服务器的TCP连接数,超出了内核定义最大数。
 

转载地址:http://ngqdi.baihongyu.com/

你可能感兴趣的文章
Golang 数据可视化利器 go-echarts ,实际使用
查看>>
mysql 跨机器查询,使用dblink
查看>>
mysql5.6.34 升级到mysql5.7.32
查看>>
dba 常用查询
查看>>
Oracle 异机恢复
查看>>
Oracle 12C DG 搭建(RAC-RAC/RAC-单机)
查看>>
Truncate 表之恢复
查看>>
Oracle DG failover 后恢复
查看>>
mysql 主从同步配置
查看>>
为什么很多程序员都选择跳槽?
查看>>
mongdb介绍
查看>>
mongdb安装使用
查看>>
mongdb在java中的应用
查看>>
区块链技术让Yotta企业云盘为行政事业服务助力
查看>>
Yotta企业云盘更好的为媒体广告业服务
查看>>
Yotta企业云盘助力旅游行业新发展
查看>>
Yotta企业云盘助力科技行业创高峰
查看>>
Yotta企业云盘更好地为教育行业服务
查看>>
Yotta企业云盘怎么帮助到能源化工行业
查看>>
企业云盘如何助力商业新发展
查看>>