关于Apache服务器大量time_wait的问题

今天访问我们自己的网站的时候有同事反映非常的慢,一开始怀疑是网络的问题。于是Ping了下我们自己的域名,发现延迟不高,只有30ms

而且也很稳定,然后又用traceroute试了试是否网关路由有问题,发现也没有问题。然后百度了下相关的解决方案,我整理了下。

首先我查看我的Apache服务器是否有开启KeepAlive,发现没有,然后在httpd.conf修改如下配置

KeepAlive On 
MaxKeepAliveRequests 100
KeepAliveTimeout 15

然后修改Linux下的/etc/sysctl配置:

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,表示关闭。

然后执行 /sbin/sysctl -p 让参数生效。

再查的时候发现time wait已经降低很少了,再次访问我们的网站,果然快了很多。

这里有一篇文章写得很详细:http://www.linuxyw.com/a/tiaoyou/20130527/470.html

原文地址:https://www.cnblogs.com/honeybaobao/p/4595854.html