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

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

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

Итак, вот что я ЗНАЮ:

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

В моменты подъемов/падений я вижу большую нагрузку на использование памяти. Посмотрите на среднюю нагрузку, когда сайт переходит в онлайн/офлайн (http://screencast.com/t/BRlfXkqrbJII). Затем я выполнил эту команду для перезапуска http (http://screencast.com/t/usVtYWZ2Qi) и тогда использование памяти снижается до этого (http://screencast.com/t/VdTIy3bgZiQB). Через час после перезапуска http сайт перешел в автономный режим, поэтому перезапуск http не помог.

Когда сайт переходит в автономный/онлайновый режим, я запускаю команду top и получаю это (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/).

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

решение1

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

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

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

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


Возможно, у MediaTemple возникли проблемы - см.Как оптимизировать сайт Wordpress с высоким трафиком?

решение2

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

Затем вы отслеживаете каждое сетевое устройство между вами и системой, где находится веб-сайт. На самом деле вы измеряете практически все, кроме самого веб-сайта. Конечно, если компьютер, на котором запущен веб-сервер, не может отвечать на пинги, он, вероятно, не будет отвечать и на 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));
   }

Связанный контент