我在 CentOS Plesk 服务器上有 100 多个域名。突然间,服务器负载变得非常高,占用了所有资源。占用了所有 RAM、所有 CPU,因此我甚至无法登录服务器来检查服务器发生了什么。我尝试查看所有站点的实时尾部日志,但没有显示任何外部威胁。服务器上安装了 Mod_Evasive,也没有阻止任何东西。
我的问题是,我如何才能确切知道哪个域/站点/Cron Job 或服务器中的任何东西正在消耗所有资源。
注意:在 Htop 实用程序中,我可以看到,最上面的 httpd 正在消耗所有资源。
答案1
您使用的是哪个版本的 Apache?mod_evasive
Apache 2.2+ 版本几乎已停止工作。您的第一个参考点可能是查看httpd status
。
赶紧跑
service httpd status
在命令行中,它会根据主机名和 IP 实时显示请求。您可能正在观察攻击(例如,攻击者同时保持大量连接打开)。
如果这不起作用,请将以下几行添加到您的httpd.conf
:
<Location /server-status>
SetHandler server-status
Order Deny,Allow
Deny from all
Allow from 127.0.0.1
</Location>
Cyberciti 有一个好文章下一步你可以尝试的是
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
以下命令创建连接到服务器的 IP 地址列表以及它们的总连接数。
(转述自DDos 攻击)。运行完这两个程序后,您就能开始知道您是否受到了攻击,或者某个网站是否只是消耗了过多的 CPU。