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