Кажется, каждый день веб-сайт, которым я управляю, переходил в онлайн и офлайн с 12:00 до 12:25. Я понятия не имею, в чем заключается проблема, поэтому мне нужен совет, с чего начать. Это сайт на основе Wordpress.
Итак, вот что я ДЕЙСТВИТЕЛЬНО знаю:
У меня есть учетная запись pingdom, которая предупреждает меня, когда сайт отключается, чтобы мы могли видеть каждый день, как часы, сайт включается / выключается.
Во время взлетов и падений я наблюдаю большую нагрузку на использование памяти. Посмотрите на среднюю нагрузку, когда сайт находится в режиме онлайн / офлайн (http://screencast.com/t/BRlfXkqrbJII). Затем я запустил эту команду, чтобы перезапустить http (http://screencast.com/t/usVtYWZ2Qi), а использование памяти сводится к следующему (http://screencast.com/t/VdTIy3bgZiQB). Через час после того, как я перезапустил http, сайт перешел в автономный / онлайн-режим, поэтому перезапуск http не сильно помог.
Когда сайт переходит в автономный / онлайн-режим, я выполнил верхнюю команду и получил это (http://screencast.com/t/zEwr7YQj3). Вот верхняя команда, когда сайт находится на самом низком уровне (http://screencast.com/t/eaMfha9lbT - так это будет называться "нормальным").
Я удалил все скрипты cron, которые есть на моем сервере (резервные копии и т. Д.). Я также удалил все cron в моей установке Wordpress. Так что по идее вообще ничего не работает.
Вот отчет о пропускной способности (http://screencast.com/t/AS0h2CH1Gypq).
Трафик вроде не такой большой (http://screencast.com/t/s7hrWNNic1K), но если посмотреть на мои времена, когда сайт идет вверх / вниз, это может быть одной из причин?
У меня есть пакет dvp Nitro в Media Temple (http://mediatemple.net/webhosting/nitro/).
Итак, на этом этапе я бы попросил некоторую помощь в попытке выяснить, в чем причина этого, и как я могу определить эту проблему. ЛЮБАЯ ПОМОЩЬ приветствуется.
Вам нужно посмотреть больше журналов. Проверьте /var/log/messages
около полуночи (и, возможно, / var / log/messages.0
, /var/log/messages.1
и т. д. за предыдущие ночи). Посмотрите на свой http.conf, чтобы найти, где хранятся ваши журналы apache (этот файл должен быть в /etc/http/conf
). Директива ErrorLog в этом файле сообщит вам, куда идет ваш журнал ошибок apache (обычно это где-то файл error_log). Посмотрите в этот файл, чтобы узнать, что он сообщает около полуночи. Проверить другие файлы в /var/log
по необычной активности можно соотнести. Файлы журнала должны сообщать вам, почему веб-сервер дает сбой в полночь.
Согласно опубликованному вами графику "просмотров в час", вы получаете более 13 000 запросов в полночный час. Это ваш лучший час на сегодняшний день. Когда вы выполняете «перезапуск службы httpd», вы видите предупреждающее сообщение о том, что ваши MaxClients превышают ваш ServerLimit, и это снижает ваши MaxClients до 200. Это означает, что вы разрешаете 200 httpd клиентов. Ваши клиенты httpd потребляют около 40 Мб каждый. 200 * 40 = 8 ГБ. Mysql также занимает 300 МБ. ОС тоже нужно. У вас не настроен своп. Ваш дисковый кеш в это время равен нулю в соответствии с опубликованным вами «верхним» выводом, но остается много свободной памяти. Это довольно странно, и это меня заводит.
Linux может внедрять убийцу OOM. Проверьте вывод dmesg на наличие этих знаков. Я бы посоветовал снизить количество MaxClients и / или увеличить объем ОЗУ (или, возможно, увеличить мощность процессора). Вы также можете посмотреть в журналах apache, чтобы узнать, что происходит на вашем сайте в этот час. Если это законный трафик, тогда можно увеличить объем ОЗУ / ЦП. Если это не так, то путь, которым следует идти, - это смягчение последствий.
С вами слишком агрессивно кидаются пауки?
Проверьте журналы Apache и попробуйте внести некоторые изменения в файл robots.txt:
User-agent: BadBot
Disallow: /
Ура
Могу я предложить вам настроить задания cron, которые будут выполнять периодический мониторинг в течение этого времени? Настройте сценарий, который выводит данные об использовании ЦП, памяти и т. Д. В течение этого времени для ваших служб. Вы также можете добавить пинг к этому периодическому сценарию, чтобы вы могли убедиться, что ваш сервер имеет рабочее сетевое соединение во время простоя. Последнее, что я бы добавил к этому сценарию периодической диагностики, - это запрос wget к вашему сайту во время простоя через интерфейс localhost.
Возможно, эти проблемы могут быть вызваны другими системами вашего хостинг-провайдера - это может быть вовсе не ваш сервер. Надеюсь, создание сценария для запуска на стороне сервера может предоставить вам дополнительную диагностическую информацию и поможет найти причину проблемы.
Ваш сервер виртуальный? Возможно, ваш провайдер в это время выполняет различные снимки состояния (из DomU), что может привести к зависанию других доменов.
В какое время чередуются ваши журналы? Если они меняются около полуночи, а это общий хостинг-сервер, то ротация журналов сама по себе может вызвать большую нагрузку и вызвать отказ вашего сайта.
Вот вариант, на который стоит обратить внимание: i = 0 while [$ i <86400]; сделать top -b >> / tmp / top_file sleep 60 $ i ++ done
Он будет запускаться в пакетном режиме один раз в минуту в течение всего дня и даст вам много полезной информации. Вам нужно посмотреть на использование ЦП, использование дискового ввода-вывода и использование памяти / свопа.
Кроме того, ваш хостинг-пакет выглядит как VPS. Может быть, у вашего VPS нет проблем, а у вашей базовой ОС? Ежедневное резервное копирование образа виртуального диска в стиле моментального снимка может занять 5 минут?
Хм ... если у вас нет скриптов cron или других процессов, которые могут вызвать эти перезагрузки, как насчет того, чтобы попросить менеджера физического хоста проверить, не икнул ли сервер в полночь?