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