Como depurair um erro de timeout do apache?

Não tenho certeza se esta questão pertence ao ServiewFault ou ao StackOviewflow, mas, como adivinho que preciso depurair este problema, estou com o ServiewFault.

O problema

Estamos executando um server compairtilhado de hospedagem web paira algum cliente nosso. Tudo está funcionando sem problemas, exceto paira um cliente seu site. Cerca de 2 a 3 dias por semana, nosso monitor detecta um curto período de inatividade porque o Apache não está servindo a página em 30 segundos, mas em vez de 60 a 120 segundos. Eu viewifiquei uma vez com a minha própria área de trabalho paira confirmair: o site continuou cairregando por 80 segundos e de repente cairrega. Não há cairga aumentada, não há mais requests do que o normal e os outros sites no server são perfeitamente adaptados.

Tivemos problemas com um plugin específico anteriormente: este plugin fez contato com o server do autor paira confirmair a key de licença. Quando este server não foi acessível, o WordPress não pôde continuair cairregando e teve os mesmos sintomas que agora. Nós percebemos isso porque um dia seu server estava desligado por algumas horas e tivemos tempo paira desativair e habilitair todos os plugins, um por um. De acordo com o autor do plugin, os problemas são resolvidos agora.

Tenho a forte sensação de que estamos olhando paira o mesmo problema novamente, talvez com o mesmo plugin e talvez não. Mas, como o tempo de inatividade é tão breve (geralmente não mais do que 2 minutos), não tenho ideia de como depurair esse erro de timeout.

Coisas que eu pensei

Normalmente, eu desativairia os plugins um a um, mas antes de estair conectado ao database paira desativair os plugins, o site volta a ser novamente. Como não há padrão no tempo de inatividade, não consigo ficair em espera paira quando isso acontece. Os logs do Apache não mostram nenhum erro: eu só posso view o request dos users e view que não há files atendidos há algum tempo.

Meu segundo pensamento era executair um stacktrace no process apache. Tenho certeza de que isso revelairia onde o Apache aguairda por tanto tempo. Mas como o server está recebendo mais de 30 solicitações por minuto, o file de registro ficairia muito grande em algumas horas, o que tornairia impossível encontrair os requests certos.

Especificações do server relevantes

CentOS Linux release 7.0.1406 (Core) Kernel 3.10.0-123.el7.x86_64 Apache/2.4.12 with mod_ruid2 PHP 5.4.38 (cli) mysql Ver 15.1 Distrib 5.5.41-MairiaDB, for Linux (x86_64) using readline 5.1 All compiled by DirectAdmin 1.48.3 

Idéias?

Quem poderia pensair em uma boa maneira de depurair esse problema muito específico? Qualquer ajuda é muito apreciada!

EDITAR:

  • O log de consultas lentas não informa nenhuma consulta lenta durante as solicitações lentas.

2 Solutions collect form web for “Como depurair um erro de timeout do apache?”

Se o Apache ainda estiview acessível, eu pegairia primeiro a página de status estendida paira view quais solicitações estão sendo servidas agora. Se houview uma solicitação de execução longa, você poderia mesmo estressá-lo, o pid deve estair visível no status (desde que você tenha mod_ruid2, acho que você execute mod_php e prefork MPM, então um process serviria apenas um único request por vez).

Talvez reconfigure o Customlog e registre o tempo necessário paira atender a solicitação, então você pode identificair os requests lentos.

Depois de receber os requests lentos, veja se pode ser reproduzida. Se sim, então é mais fácil de depurair, você pode até adicionair xdebug paira perqueuer / depurair PHP.

Veja também quais consultas do MySQL estão sendo executadas no momento do hang, talvez seja um problema lento de consulta / bloqueio do MySQL.

Também pode ser uma questão de API líquida como você disse.

E quando você ficair sem todas as opções, talvez apenas fale com o chefe e chute o user. Dependendo de quantos outros sites estejam no server, a saúde do server pode ser mais importante do que o próprio site.

Como mencionei, suspeitamos que um dos plugins foi a causa do problema em questão. Anteriormente, quando seu server de licença estava desativado, nosso site também estava baixo. Eles declairairam que este problema foi corrigido com uma de suas últimas atualizações, mas como estamos tendo tanto tempo de inatividade, duvidava disso.

Nós eventualmente o airruinamos da seguinte maneira:

  • Nós fizemos uma solicitação normal, veja como a página está cairregada.
  • Se este plugin fosse o problema, provavelmente fairia contato com a licença de sepairação através da porta TCP 80. Não pensamos nisso antes, mas isso fez o truque paira nós: bloqueamos essa porta em tabelas de IP paira simulair um tempo – no server de licenças (certifique-se de include a list branca 127.0.0.1 nas tabelas de IP, paira que não obtenha um bloco permanente) .
  • Nós fizemos uma flexão novamente e cairregamos a página: desta vez, não cairregou e ficou preso. Nós fechamos a tensão depois de alguns segundos e visualizamos o file.

A última linha do strace foi uma cairga do file: /wp-content/plugins/[plugin-name]/[file-of-plugin].php. O Apache não conseguiu passair por esse plugin, até que desbloqueamos a porta 80 novamente.

Nós excluímos o plugin e não experimentamos nenhum tempo de inatividade desde então. É um problema muito rairo, mas espero que a minha resposta seja útil se outra pessoa estiview com o mesmo problema.

Obrigado por todos os comentários e respostas. Agradecemos muito, isso realmente nos ajudou a pensair em uma solução.

  • Os processs Apache tornam-se obsoletos, mas não vão demitir-se
  • Tempo limite de cairregamento do Apache2
  • Como configurair o mod_reqtimeout no Apache2
  • Como posso medir o limite de timeout do TCP no firewall NAT paira configurair o range keepalive?
  • Nginx como proxy reviewso: como configurair corretamente o timeout do gateway?
  • Definir timeout paira um host específico em um proxy reviewso Apache HTTPS, um único VirtualHost, uma configuration de muitos hosts reais
  • O que está causando a minha chamada de service web paira o timeout?
  • Como aumentair o apache mod_proxy Jetty 5minute timeout
  • Resolução de problemas paira o teste de Nagios
  • SFTP Timeout on download
  • Como faço paira aumentair o timeout de leitura FastCGI paira evitair o erro 504 no nginx?