Como o tempo de resposta nos logs do apache é medido e em que ponto ele inicia e pára?

4

Então, olhando por cima dos logs, o tempo médio de resposta é de cerca de 20 a 30ms, mas a carga na máquina é de 20+ e, usando um teste externo, as coisas parecem demorar mais de um segundo para serem carregadas. Eu não posso imaginar isso é tudo latência de rede, então estou curioso em que ponto os logs do apache começam a rastrear a solicitação. Se a carga estiver em 20, isso significa que as coisas estão esperando na fila para chegar ao processo de acpache, mas quando chegam lá, são necessários apenas 30ms para processar?

    
por Ryan Detzel 24.11.2009 / 14:13

2 respostas

8

Suponho que você esteja falando do tempo de resposta entregue por% D na linha de log (ou seja, em microssegundos para atender à solicitação). O tempo declarado lá é a duração da leitura bem-sucedida do URI (por exemplo, GET / HTTP / 1.1), mas antes do resto dos cabeçalhos para o log do dito pedido, o que acontece quando ele é servido completamente (no código-fonte termos isso seria de httpd: //apache.wirebrain.de/lxr/source/server/protocol.c#617? v = 2.2.14 para apache.wirebrain.de/lxr/source/modules/loggers/mod_log_config.c # 623? V = 2.2.14). Então, sim, uma vez que o Apache realmente leia o pedido, ele leva apenas 30ms.

Se a latência adicionada se deve ao carregamento da máquina, depende de onde essa carga é gerada e de como o seu Apache httpd está configurado. Uma explicação seria que todos os seus funcionários do httpd estão ocupados e o pedido fica preso na fila de aceitação (veja www.cs.rice.edu/CS/Systems/Web-measurement/paper/node3.html para obter um pouco mais de conhecimento técnico do que é isso, a versão curta é que o httpd não precisa aceitar imediatamente uma conexão se não houver trabalhadores disponíveis).

Para obter uma indicação de se isso está acontecendo seria olhar para a página de status do httpd (localhost / server-status, você desejará ter o mod_status (httpd.apache.org/docs/2.2/mod/mod_status.html configurado para isso) e verifique se você tem algum trabalhador ocioso restante (e se ele é "suficiente"). Se não, tente aumentar o número de servidores httpd spawns (a configuração exata depende do módulo MPM que você usa; para mpm_worker (httpd.apache.org/docs/2.2/mod/worker.html), você aumentaria os MaxClients , ThreadsPerChild, ServerLimit, etc., conforme apropriado. Tenha cuidado para não exceder a memória disponível da sua máquina ou o máximo de arquivos abertos (lembre-se de que cada conexão tem no mínimo um filehandle).

Dependendo do / por que / todos os funcionários do apache estão comprometidos, isso pode ajudá-lo. Se eles estão todos presos na geração de páginas dinâmicas de longa duração (isto é, mod_php ou algo parecido), tudo o que isso vai fazer é aumentar a carga do seu sistema. Se a carga em seu sistema for de um subsistema de armazenamento abaixo da paridade e todos os processos do Apache estiverem amarrados em transferências de arquivos grandes e aguardando no subsistema de E / S, você obterá mais carga. Existem soluções alternativas para ambos; se for conteúdo dinâmico, você desejará limitar o acesso simultâneo a scripts de longa execução (por exemplo, removendo o PHP do processo de trabalho e, digamos, um processo FastCGI ou CGI e limitando a quantidade deles a algum ponto abaixo dos MaxClients configuração para que objetos não dinâmicos possam ser exibidos simultaneamente sem incorrer em um backlog de aceitação.

Desculpem os http-links em falta, aparentemente a minha reputação neste site não é suficiente para postar links.

    
por 25.12.2009 / 14:56
0

Não tenho certeza se essa instalação do Apache está sendo executada em um servidor Windows, mas se você puder usar uma combinação de perfmon (com Network Interface / Output Queue Length para relatar filas de rede, se houver) e Firefox + Firebug para documentar Tempos de resposta. Isso pode lhe dar algumas dicas sobre onde o problema pode estar.

Eu também achei este artigo no mod_log_config, não tenho certeza se você está usando este ou outro módulo para logar. Eu não tenho um desenvolvimento Apache para testar em mim, mas pode valer a pena ler.

Boa sorte.

    
por 24.11.2009 / 14:53

Tags