Назад | Перейти на главную страницу

Как узнать, какой сайт / скрипт занимает весь процессор и оперативную память в Plesk / apache

У меня более 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). После запуска обоих из них вы начинаете видеть, атакованы ли вы, или один веб-сайт просто потребляет непропорционально много процессора.