2700连接和100%的CPU与Apache?

我们只是将我们的网站configuration到运行在Windows Server 2008上的新服务器。

我们的服务器相当强大,至强quadcore 3.0和25GB内存。 运行Mysql和Apache

问题是我们在CPU上运行得很高。 任务pipe理器通常在所有内核中显示90-> 100%的CPU最大值。 这个CPU都在从Apache处理httd。

运行

netstat -ano | find /c "80" 

我们发现服务器总是在端口80上连接大约2200 – > 2700的连接。这是否是ddos攻击,我们如何重新configuration​​以优化服务器并阻止不必要的请求?

为什么不启用扩展的服务器状态(限制在您的IP范围)来查看连接和到哪里。

http://httpd.apache.org/docs/2.0/mod/mod_status.html

看看你的日志。

不pipe是不好还是不好,都取决于你的应用和具体情况。 通常当你使用netstat来统计连接时,你会这样做:

 netstat -ano | grep ESTABLISHED | find /c "80" | wc -l 

否则你将在TIME_WAIT中计数大量的连接,这通常是正常的。 您也可以对SYN连接进行计数,以检查SYN Flood攻击。

你可能会发现你的连接数量显着下降,只需计算ESTABLISHED。 例如,在我的一台服务器上,当前处于6 req / sec,总共有1000个连接,但只有5个处于ESTABLISHED状态(大部分在TIME_WAIT)。 但是,在另一台服务器上,有1000个连接,但在ESTABLISHED状态下有500个连接(20 req / sec,我怀疑某种KeepAlive设置在这里)。 从这些值你的数字不一定看起来不错。

您也可以使用扩展netstat命令来计算每个IP地址连接到服务器的连接数量:

 netstat -an | grep ESTABLISHED | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n 

连接/ IP的“正常”数量取决于您的应用程序。 在我的情况下,平均是5-10,所以如果我看到更多的比我更详细地看。