У меня более 100 доменов на сервере CentOS Plesk. Внезапно нагрузка на сервер становится очень высокой и съедает все ресурсы. съедает всю оперативную память, весь процессор, из-за чего я даже не могу войти на сервер, чтобы проверить, что происходит с сервером. Я попытался просмотреть журнал Tail в режиме реального времени для всех сайтов, который не показал ничего вроде внешней угрозы. На сервере установлен Mod_Evasive, который тоже ничего не блокирует.
Мой вопрос в том, как я могу узнать, какой именно домен / сайт / задание Cron или что-либо на сервере съедает все ресурсы.
Примечание: в утилите Htop я вижу это сверху, его httpd, который пожирает все ресурсы.
Какую версию 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 Deflate). После запуска обоих из них вы начинаете видеть, атакованы ли вы, или один веб-сайт просто потребляет непропорционально много процессора.