
Parece que hoy un sitio web que administro ha estado conectado y desconectado durante todo el día. No tengo idea de qué está causando el problema, así que busco orientación sobre por dónde empezar. Es un sitio basado en Wordpress.
Así que esto es lo que SÍ sé:
Utilizo un programa que hace ping al servidor cada minuto y cuando el servidor no me responde me envía un correo electrónico, así puedo saber exactamente cuándo el sitio está en línea y fuera de línea. El sitio está entre las 8:00 p. m. y las 12:28 p. m., 12:28, y alrededor de la 1:00 p. m., temprano en la mañana, 12:29 (zona horaria de la ciudad de Nueva York, y todos los horarios a continuación están en la misma zona horaria).
En el momento de los altibajos veo mucha tensión en el uso de la memoria. Mire el promedio de carga cuando el sitio está en línea/fuera de línea (http://screencast.com/t/BRlfXkqrbJII). Luego ejecuté este comando para reiniciar http (http://screencast.com/t/usVtYWZ2Qi) y el uso de la memoria luego se reduce a esto (http://screencast.com/t/VdTIy3bgZiQB). Una hora después de reiniciar http, el sitio se desconectó/en línea, por lo que reiniciar http no sirvió de mucha ayuda.
Cuando el sitio se desconecta/en línea, ejecuté el comando superior y obtengo esto (http://screencast.com/t/zEwr7YQj3). Aquí hay un comando superior cuando el sitio está en su punto más bajo (http://screencast.com/t/eaMfha9lbT- por lo que esto se denominaría "normal").
Aquí hay un informe de ancho de banda (http://screencast.com/t/AS0h2CH1Gypq).
El tráfico no parece ser mucho (http://screencast.com/t/s7hrWNNic1K), pero mirando mis tiempos el sitio sube o baja, ¿ésta puede ser una de las razones?
Tengo el paquete dvp Nitro en Media Temple (http://mediatemple.net/webhosting/nitro/).
Entonces, en este punto, solicitaría ayuda para tratar de descubrir cuál es la causa de esto y cómo puedo identificar este problema. Cualquier ayuda es muy apreciada.
Respuesta1
El promedio de carga en los 30 es alto y la CPU está 100% ocupada. El uso de la CPU es bastante uniforme en todos los procesos HTTPD, por lo que no se trata de un proceso fraudulento específico. Básicamente, su servidor no es capaz de manejar la cantidad de solicitudes HTTP simultáneas que recibe.
Es posible que pueda hacer algo para reducir la cantidad de procesamiento necesario para producir una página.
Podrías revisar los registros del servidor Apache para intentar ver por qué la carga es tan desigual. Quizás esté siendo objetivo de un ataque DDOS; de ser así, hay cosas que puede hacer para mitigar los efectos.
O eso o necesitas un servidor más grande.
Quizás MediaTemple tenga un problema - ver¿Cómo optimizo un sitio web Wordpress de alto tráfico?
Respuesta2
Utilizo un programa que hace ping al servidor cada minuto.
Luego, estará monitoreando todos los dispositivos de red entre usted y el sistema donde reside el sitio web. De hecho, estás midiendo casi todo excepto el sitio web real. Seguro que si la computadora que ejecuta el servidor web no puede responder a los pings, probablemente tampoco responderá a las solicitudes HTTP.
Al observar los otros detalles proporcionados, parece ser el procesamiento HTTP el que está causando problemas; sin embargo, ese es un servidor muy mal configurado si no responde a los pings debido al procesamiento HTTP.
Podría ser un ataque de DOS, pero sospecho que es más probable que se esté generando una condición de carrera en alguna parte. ¿Qué está pasando con su tráfico HTTP? ¿Estás recibiendo ráfagas de actividad de algunos hosts? ¿El tiempo de respuesta adelanta o retrasa el promedio de carga?
Los gráficos y los informes que ha proporcionado ayudan un poco, pero aquí hay muy poca información en la que basar un diagnóstico; realmente necesita ver su tasa de calor promediada por minuto como máximo en lugar de por hora. ¿Y qué pasa con ese enorme pico a las 0 horas? Eso me parece extraño.
Si bien puede comenzar a registrar %D e instalar/configurar mod-log-firstbyte para ver dónde surge el problema, puede hacer todo eso de manera mucho menos invasiva usando un prefijo automático de PHP, por ejemplo, lo siguiente escribirá una entrada de registro cuando comience el procesamiento. y registrar mucha información sobre el trabajo realizado al procesar una solicitud cuando se completa.
<?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));
}