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

Как найти причины, по которым сайт переходит в режим онлайн / офлайн

Кажется, сегодня веб-сайт, которым я управляю, был в сети и офлайн в течение всего дня. Я понятия не имею, в чем заключается проблема, поэтому мне нужен совет, с чего начать. Это сайт на основе Wordpress.

Итак, вот что я ДЕЙСТВИТЕЛЬНО знаю:

Я использую программу, которая пингует сервер каждую минуту, и когда сервер не отвечает мне, он отправляет мне электронное письмо, поэтому я могу точно знать, когда сайт находится в сети или офлайн. Сайт с 20:00 до 12:00 12:28 и примерно на 1 час ранним утром 12.29 (часовой пояс Нью-Йорка, и все время, указанное ниже, находится в том же часовом поясе).

Во время взлетов / падений я вижу большую нагрузку на использование памяти. Посмотрите на среднюю нагрузку, когда сайт находится в режиме онлайн / офлайн (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 - так это будет называться "нормальным").

Вот отчет о пропускной способности (http://screencast.com/t/AS0h2CH1Gypq).

Трафик вроде не такой большой (http://screencast.com/t/s7hrWNNic1K), но если посмотреть на мои времена, когда сайт идет вверх / вниз, это может быть одной из причин?

У меня есть пакет dvp Nitro в Media Temple (http://mediatemple.net/webhosting/nitro/).

Итак, на этом этапе я бы попросил некоторую помощь в попытке выяснить, в чем причина этого, и как я могу определить эту проблему. ЛЮБАЯ ПОМОЩЬ приветствуется.

Средняя нагрузка в 30 секунд высока, а ЦП загружен на 100%. Использование ЦП практически одинаково для всех ваших процессов HTTPD, поэтому это не один конкретный мошеннический процесс. Обычно ваш сервер не может обрабатывать количество одновременных HTTP-запросов, которые он получает.

Возможно, вы могли бы сделать что-то, чтобы уменьшить объем обработки, необходимой для создания страницы.

Вы можете просмотреть журналы сервера Apache, чтобы попытаться понять, почему загрузка такая неравномерная. Возможно, вы подвергаетесь DDOS-атаке - в таком случае вы можете предпринять меры, чтобы смягчить последствия.

Либо так, либо вам нужен сервер побольше.


Может быть у MediaTemple проблема - см. Как оптимизировать сайт Wordpress с высокой посещаемостью?

Я использую программу, которая пингует сервер каждую минуту

Затем вы отслеживаете каждое сетевое устройство между вами и системой, в которой находится веб-сайт. На самом деле вы измеряете практически все, кроме фактического веб-сайта. Конечно, если компьютер, на котором запущен веб-сервер, не может отвечать на эхо-запросы, он, вероятно, также не будет отвечать на HTTP-запросы.

Глядя на другие предоставленные детали, кажется, что именно обработка HTTP вызывает проблемы - однако это один из очень плохо настроенных серверов, если он не отвечает на эхо-запросы из-за обработки HTTP.

Возможно, это DOS-атака, но я подозреваю, что более вероятно, что где-то есть состояние гонки. Что происходит с вашим HTTP-трафиком? Вы получаете всплески активности от нескольких хостов? Время отклика опережает или отстает от средней нагрузки?

Графики и отчеты, которые вы предоставили, немного помогают - но здесь очень мало информации, на которой можно основывать диагноз - вам действительно нужно видеть вашу горячую скорость, усредненную максимум по минутам, а не по часам. А как насчет того огромного скачка в 0 часов? Мне это кажется странным.

Хотя вы можете начать регистрировать% D и установить / настроить mod-log-firstbyte, чтобы увидеть, где возникает проблема, вы можете сделать все это гораздо менее агрессивно, используя автоматическое добавление PHP, например следующее будет записывать запись в журнал при запуске обработки и записывать много информации о работе, проделанной при обработке запроса, когда он завершается.

<?php
   global $error_log, $start_time;
   // IIRC wordpress implement output buffering so no need to do it here.
   $error_log=@fopen('php://stdin','w');
   $start_time=microtime(true);
   @fputs($error_log, date('r') 
       . getmypid() . 
       . " started  \"" 
       . $_SERVER['REQUEST_URI'] . '"');
   @register_shutdown_function('log_complete');
   function log_complete()
   {
      global $error_log, $start_time;
      $r=getrusage();
      @fputs($error_log, date('r') 
       . getmypid() . 
       " finished " .
       memory_get_usage() . ' ' .
       microtime(true)-$start_time . ' ' .
       var_export($r, true));
   }