logs do apache - as solicitações são listadas com um longo atraso

2

Estou usando o Apache / 2.2.15 (Unix). Em um projeto específico (usando o php 5.3), os logs exibem uma requisição (POST de um formulário complicado) muito tempo após a requisição ser executada (40-50 minutos).

Às vezes, a solicitação expira; às vezes (como afirma o usuário), ele continua normalmente. Mas não consigo explicar a grande mudança de horário entre a hora da solicitação sendo feita e a hora em que ela é registrada.

Você tem alguma idéia de por que isso está ocorrendo? Você já notou algo semelhante?

Algumas linhas de registro abaixo:

[12/Oct/2015:11:32:01 -0500] "GET /adm/manageCompanies.php....  
[12/Oct/2015:11:32:04 -0500] "GET /adm/manageCompanies.php....  
[12/Oct/2015:**10:25:00** -0500] "POST /adm/manageCompanies.ph....  
[12/Oct/2015:11:32:04 -0500] "GET /adm/manageCompanies.php....  
[12/Oct/2015:11:32:08 -0500] "GET /adm/manageCompanies.php....  

A linha com tempo em negrito é o problema - ela é registrada completamente fora de seqüência ...

Mais um exemplo abaixo:

[13/Oct/2015:08:18:05 -0500] "POST /adm/manageCompanies.php....  
[13/Oct/2015:08:18:05 -0500] "GET /adm/manageCompanies.php ....  
[13/Oct/2015:08:22:53 -0500] "GET /adm/manageCompanies.php ....  
[13/Oct/2015:**07:37:37** -0500] "POST /adm/manageCompanies.php....  
[13/Oct/2015:08:32:48 -0500] "GET /adm/manageCompanies.php ....  
[13/Oct/2015:08:32:50 -0500] "GET /adm/manageCompanies.php ....  

Como posso rastrear a causa desse problema? Não é uma questão de registro, mas o formulário enviado expira e causa "danos".

    
por Liviu 05.11.2015 / 17:06

2 respostas

0

Desta vez é a hora que o Apache recebeu o pedido.

O Apache grava em logs após a conclusão da solicitação.

Você pode verificar no status do servidor quais solicitações são muito longas e, quando tiver uma, obter seu PID.

Depois, você pode analisar esse processo para ver o que é fazer isso:

strace -t -tt -p PID

lsof pode, então, ajudá-lo a ver o que está no final de um id de descritor de arquivo (conexão com um banco de dados, um webservice ...)

    
por 05.11.2015 / 17:12
0

Normalmente, ative o registro de duração da solicitação, consulte% D aqui:

link

Imprime o tempo em microssegundos necessário para satisfazer um pedido. Dessa forma, você pode facilmente descobrir quais scrpits são os mais lentos.

Dito isto, no seu caso, eu começaria a depurar o script manageCompanies.php, talvez adicionando alguns ecos ou print_rs a algum arquivo em partes "estratégicas" do script, começando com a parte que lida com o método POST, antes e depois loops e eventuais consultas DB, escrevendo um timestamp e para exxample "Begin loop foo / loop final foo", espero que você tenha a idéia.

    
por 05.11.2015 / 19:23