Como encontrar os motivos pelos quais o site fica online/offline

Como encontrar os motivos pelos quais o site fica online/offline

Parece que hoje um site que administro fica online e offline o dia todo. Não tenho ideia do que está causando o problema, por isso estou buscando orientação sobre por onde começar. É um site baseado em Wordpress.

Então aqui está o que eu sei:

Eu uso um programa que faz ping no servidor a cada minuto e quando o servidor não está respondendo ele me envia um e-mail, para que eu possa saber exatamente quando o site está online e offline. O site entre 20h e 12h (12h28) e por volta de 1 hora da manhã 12h29 (fuso horário da cidade de Nova York, e todos os horários abaixo estão no mesmo fuso horário).

Na hora dos altos/baixos vejo muita pressão no uso da memória. Observe a média de carga quando o site está online/offline (http://screencast.com/t/BRlfXkqrbJII). Então executei este comando para reiniciar o http (http://screencast.com/t/usVtYWZ2Qi) e o uso de memória cai para isso (http://screencast.com/t/VdTIy3bgZiQB). Uma hora depois de reiniciar o http, o site ficou offline/online, então reiniciar o http não ajudou muito.

Quando o site está offline/online, executei o comando top e obtive isto (http://screencast.com/t/zEwr7YQj3). Aqui está um comando superior quando o site está no nível mais baixo (http://screencast.com/t/eaMfha9lbT- então isso seria apelidado de "normal").

Aqui está um relatório de largura de banda (http://screencast.com/t/AS0h2CH1Gypq).

O trânsito não parece ser tanto (http://screencast.com/t/s7hrWNNic1K), mas olhando meus tempos o site está subindo/descendo esse pode ser um dos motivos?

Eu tenho o pacote dvp Nitro no Media Temple (http://mediatemple.net/webhosting/nitro/).

Portanto, neste ponto, gostaria de solicitar ajuda para tentar descobrir qual é a causa disso e como posso identificar esse problema. Qualquer ajuda é muito apreciada.

Responder1

A média de carga na casa dos 30 é alta e a CPU está 100% ocupada. O uso da CPU é bastante uniforme em seus processos HTTPD, portanto não é um processo invasor específico. Basicamente, seu servidor não é capaz de lidar com o número de solicitações HTTP simultâneas que está recebendo.

Pode ser que você possa fazer algo para reduzir a quantidade de processamento necessária para produzir uma página.

Você pode revisar os logs do servidor Apache para tentar ver por que o carregamento é tão desigual. Talvez você esteja sendo alvo de um ataque DDOS - nesse caso, há coisas que você pode fazer para mitigar os efeitos.

Ou isso ou você precisa de um servidor maior.


Talvez o MediaTemple tenha um problema - vejaComo faço para otimizar um site Wordpress de alto tráfego?

Responder2

Eu uso um programa que faz ping no servidor a cada minuto

Então você monitora todos os dispositivos de rede entre você e o sistema onde o site reside. Na verdade, você está medindo quase tudo, exceto o site em si. Claro, se o computador que executa o servidor web não conseguir responder aos pings, provavelmente também não responderá às solicitações HTTP.

Olhando para os outros detalhes fornecidos, parece ser o processamento HTTP que está causando problemas - no entanto, esse é um servidor muito mal configurado se não responder aos pings devido ao processamento HTTP.

Pode ser um ataque DOS - mas suspeito que seja mais provável que haja uma condição de corrida em algum lugar. O que está acontecendo com seu tráfego HTTP? Você está recebendo picos de atividade de alguns hosts? O tempo de resposta está adiantado ou atrasado em relação à média de carga?

Os gráficos e relatórios que você forneceu ajudam um pouco - mas há muito pouca informação aqui para basear um diagnóstico - você realmente precisa ver sua taxa média calculada por minuto, no máximo, e não por hora. E aquele enorme pico às 0h? Isso parece estranho para mim.

Embora você possa começar a registrar %D e instalar/configurar o mod-log-firstbyte para ver onde o problema está surgindo, você pode fazer tudo isso de forma muito menos invasiva usando um prefixo automático do PHP, por exemplo, o seguinte irá gravar uma entrada de log quando o processamento começar e registre muitas informações sobre o trabalho realizado no processamento de uma solicitação quando ela for concluída.

<?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));
   }

informação relacionada