Как найти сайт, на котором происходит сбой сервера?

Вероятно, один из 100 сайтов дает сбой VPS каждые несколько дней. Apache подключается к нескольким сотням, а mysql - к нескольким миллионам. Это приводит к тому, что центральный процессор постоянно находится на + 100%, что делает сервер полностью непригодным для использования. Перезапуск исправляет ситуацию на несколько дней. Как найти злого?

У меня есть бог mod_status с включенным extendedstatus, но, тем не менее, он показывает только несколько последних запросов. Не уверен, как использовать это, чтобы сузить его среди 100 сайтов.

В остальное время сервер использует 20-30% ресурсов, поэтому он не перегружен сайтами.

6
задан 17 April 2015 в 15:27

1 ответ

Я не делаю известной партии о Вашей конфигурации сервера, но я попытаюсь помочь.

Сначала запустите iptables и не позволяйте нападать на свой сервер

iptables -A INPUT -p tcp --dport 80 -m limit --limit 25/minute --limit-burst 100 -j ACCEPT

После этого я думаю это logrotate может помочь нам найти сайт с самым высоким влиянием.

Установка logrotate

sudo apt-get install logrotate

Проверить, что logrotate был успешно установлен, выполняло это в командной строке.

logrotate

Конфигурации и опции по умолчанию для logrotate утилита присутствует в:

/etc/logrotate.conf

Некоторые важные параметры конфигурации: интервал вращения, размер файла журнала, количество вращения и сжатие.

Специализированная информация файла журнала (для переопределения значений по умолчанию) хранится в:

/etc/logrotate.d/

Моя идея состоит в том, чтобы контролировать http файл доступа. Сайт с большим доступом должен иметь больший журнал доступа. Logrotate и cron будет наблюдать за нами на этом и отправлять Вам почту о проблеме...

Править logrotate.conf и добавьте некоторый код

sudo nano /etc/logrotate.conf

/path_to_apache_logs/*.log {
    size 1M
    dateext
    postrotate
      /usr/bin/killall -HUP httpd
      ls -ltr /path_to_apache_logs/ | mail -s "$HOSTNAME: Apache restarted and log files rotated" name@domain.com
    endscript
}

Необходимо настроить

size - размер файла журнала, изменитесь на основе своих потребностей path_to_apache_logs - измените путь на основе пути журнала в vhost.conf

Больше о настройке logrotate.conf можно найти здесь

Установка cron работать logrotate на каждых 5 минутах

*/5  *  *  *  *   root    /usr/sbin/logrotate /etc/logrotate.conf

То, когда Вы находитесь на "нападении", Вы получаете доступ к журналу, будет рост быстро. Cron будет работать logrotate проверять размер файла журнала и если размер файла XX, повернет журнал, перезапустит атташе и отправит Вам почту.

Поскольку каждый виртуальный хост имеет собственный файл доступа, Вы будете известный сайт ведьмы быть сервером "уничтожитель"

2
ответ дан 18 April 2015 в 01:27

Другие вопросы по тегам:

Похожие вопросы: