ubuntu 12.4 LTS、apache 2.2.14、mysql+wordpress。
仅使用 Web 应用程序扫描工具扫描服务器,服务器就会进入严重负载 70.0 69.9 67.0,并且变得无响应。可以说,从单个主机轻松进行 DOS。如何防止这种情况?
更新:
这是我在 top 命令上看到的内容,似乎有上百万个 apache2 实例正在运行。我该如何防止这种情况发生?我该如何限制可以运行的 apache2 实例数量?
top - 08:58:58 up 10:22, 1 user, load average: 160.39, 159.70, 158.99
Tasks: 297 total, 1 running, 296 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.9%sy, 0.0%ni, 29.0%id, 70.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 503420k total, 498456k used, 4964k free, 300k buffers
Swap: 1048568k total, 1048184k used, 384k free, 5432k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
9333 www-data 20 0 167m 2860 680 D 0 0.6 0:05.18 apache2
2194 mysql 20 0 455m 3160 312 S 0 0.6 1:49.67 mysqld
9294 www-data 20 0 167m 2816 420 D 0 0.6 0:05.04 apache2
9337 www-data 20 0 167m 2892 360 D 0 0.6 0:05.42 apache2
9281 www-data 20 0 186m 3372 396 D 0 0.7 0:05.96 apache2
9313 www-data 20 0 167m 3012 564 D 0 0.6 0:05.64 apache2
9327 www-data 20 0 167m 3300 412 D 0 0.7 0:04.88 apache2
9395 www-data 20 0 167m 2540 76 D 0 0.5 0:04.97 apache2
9285 www-data 20 0 167m 2636 328 D 0 0.5 0:05.39 apache2
9297 www-data 20 0 167m 2420 528 D 0 0.5 0:04.89 apache2
9408 www-data 20 0 167m 2728 64 D 0 0.5 0:04.42 apache2
82 root 20 0 0 0 0 D 0 0.0 2:57.97 kswapd0
223 root 20 0 0 0 0 S 0 0.0 0:02.46 kjournald 9470 www-data 20 0 167m 3216 652 D 0 0.6 0:02.26 apache2
9502 smmsp 20 0 65772 1068 260 D 0 0.2 0:01.62 sendmail-msp
9303 www-data 20 0 167m 2800 432 D 0 0.6 0:05.24 apache2
9352 www-data 20 0 167m 2988 492 D 0 0.6 0:04.98 apache2
9351 www-data 20 0 167m 3144 560 D 0 0.6 0:04.57 apache2
9374 www-data 20 0 167m 3304 556 D 0 0.7 0:04.79 apache2
9411 www-data 20 0 167m 2888 60 D 0 0.6 0:03.81 apache2
9136 root 20 0 19368 652 256 R 0 0.1 0:06.73 top
9289 www-data 20 0 167m 3180 608 D 0 0.6 0:05.61 apache2 9298 www-data 20 0 167m 3312 564 D 0 0.7 0:05.59 apache2
答案1
您应该检查哪些任务在服务器上产生了如此巨大的负载。
然后,如果您得到了有问题的任务:要么将其配置为限制可能的请求数量,要么根据请求数量/ IP 地址限制访问。
答案2
看起来您已经完全耗尽了物理 RAM,并且正在疯狂地进行交换。您的top
输出显示有近 300 个正在运行的进程,其中大部分是 Apache 工作进程。
看这个Apache 文档的一部分用于配置 Apache 进程的最大数量。您将看到 MaxClients、ThreadsPerChild 和 ServerLimit 指令。