Como depurar a barraca do apache

2

Eu tenho um servidor web Drupal vps no centos 6.3 que está funcionando bem desde fevereiro.

Nos últimos dias, o site começou a funcionar: o tcp conecta-se e, em seguida, aguarda indefinidamente.

Se eu reiniciar o httpd, o site se tornará responsivo por alguns minutos antes de parar novamente.

Há muito espaço em disco, a cpu está ociosa e cerca de metade da memória do sistema está em buffers e cache. O Mysqld permanece responsivo.

Se eu executar o pstack nos processos de trabalho do httpd, eles parecem estar presos no mesmo lugar:

#0  0x00007f568d9c3a28 in poll () from /lib64/libc.so.6
#1  0x00007f568deb6717 in apr_wait_for_io_or_timeout () from /usr/lib64/libapr-1.so.0
#2  0x00007f568deb1a28 in apr_socket_sendv () from /usr/lib64/libapr-1.so.0
#3  0x00007f568f3d3083 in ?? ()
#4  0x00007f568f3d4035 in ap_core_output_filter ()
#5  0x00007f568f3e6194 in ap_http_chunk_filter ()
#6  0x00007f568f3e46db in ap_http_header_filter ()
#7  0x00007f568f3c8fd0 in ap_content_length_filter ()
#8  0x00007f568f3e6443 in ap_byterange_filter ()
#9  0x00007f568f3df9fc in ap_filter_flush ()
#10 0x00007f568f3c6f8e in ap_rwrite ()
#11 0x00007f5689814f76 in ?? () from /etc/httpd/modules/libphp5.so
#12 0x00007f568974e36b in php_ub_body_write_no_header () from /etc/httpd/modules/libphp5.so
#13 0x00007f568974e998 in php_end_ob_buffer () from /etc/httpd/modules/libphp5.so
#14 0x00007f568974f32f in ?? () from /etc/httpd/modules/libphp5.so
#15 0x00007f568974e998 in php_end_ob_buffer () from /etc/httpd/modules/libphp5.so
#16 0x00007f568974f051 in ?? () from /etc/httpd/modules/libphp5.so
#17 0x00007f56897db0c8 in ?? () from /etc/httpd/modules/libphp5.so
#18 0x00007f56897b2400 in execute () from /etc/httpd/modules/libphp5.so
#19 0x00007f568978cb3d in zend_execute_scripts () from /etc/httpd/modules/libphp5.so
#20 0x00007f568973ada8 in php_execute_script () from /etc/httpd/modules/libphp5.so
#21 0x00007f5689815a85 in ?? () from /etc/httpd/modules/libphp5.so
#22 0x00007f568f3d4b00 in ap_run_handler ()
#23 0x00007f568f3d83be in ap_invoke_handler ()
#24 0x00007f568f3e386c in ap_internal_redirect ()
#25 0x00007f568b82a7a5 in ?? () from /etc/httpd/modules/mod_rewrite.so
#26 0x00007f568f3d4b00 in ap_run_handler ()
#27 0x00007f568f3d83be in ap_invoke_handler ()
#28 0x00007f568f3e3a30 in ap_process_request ()
#29 0x00007f568f3e08f8 in ?? ()
#30 0x00007f568f3dc608 in ap_run_process_connection ()
#31 0x00007f568f3e8807 in ?? ()
#32 0x00007f568f3e8b1a in ?? ()
#33 0x00007f568f3e979c in ap_mpm_run ()
#34 0x00007f568f3c0900 in main ()

Alguma sugestão de onde procurar em seguida na depuração?

    
por tbroberg 03.05.2013 / 19:28

2 respostas

0

Tente executar strace -p PID_OF_APACHE -f para depurar a saída. Além disso, talvez você precise atualizar sua versão do Apache e / ou uma ou mais de suas dependências - ou até mesmo o Drupal, caso isso também não seja atualizado.

Você pode querer verificar com os changelogs dos serviços acima para ver se há algum problema conhecido.

    
por 03.05.2013 / 20:07
0

O rastreamento de pilha mostra o php liberando o buffer de saída e aguardando a resposta do navegador.

Você deve fazer um rastreamento de rede, ver se o tráfego de determinados clientes não é irrealisticamente lento. Pode ser um ataque slowloris .

    
por 03.05.2013 / 20:57