Analisando o tempo de solicitação para localizar páginas lentas

3

Estou procurando páginas que são lentas em um grande site personalizado de PHP CMS.

Não quero cavar no código mal documentado existente e descobri que os logs de acesso do apache podem exibir o tempo gasto para atender à solicitação, em segundos e milissegundos.

Conf:

CustomLog /var/log/httpd/timed_access_log timed
LogFormat "%h %l %u %t \"%r\" %>s %b - %T/%D" timed

Saída:

86.132.***.*** - - [22/Jun/2010:13:25:31 +0100] "GET /menu/topscript/ HTTP/1.1" 200 183 - 0/12418
86.132.***.*** - - [22/Jun/2010:13:25:31 +0100] "GET /search/script/ HTTP/1.1" 200 266 - 0/13173
86.132.***.*** - - [22/Jun/2010:13:25:31 +0100] "GET /subscribe/script/ HTTP/1.1" 200 279 - 0/12882

Existe uma maneira fácil de encontrar as principais solicitações lentas?

Interessado em programas de análise como awstats ou um script awk (que eu nunca consegui entender).

Relacionados: AWStats e tempo gasto para atender à solicitação

Minha solução final, baseada na resposta do raio:

awk '{cnt[$7]+=substr($12,1+match($12,"/")); i[$7]+=1}END{for (x in cnt){if (i[x] > 5) print x,i[x],cnt[x]/i[x]}}' timed_access_log | sort -k3nr | head -20

Conta apenas os que têm pelo menos 5 solicitações, classifica-os ao diminuir o tempo médio e devolve os 20 primeiros.

    
por Annan 22.06.2010 / 13:14

1 resposta

1

Você pode tentar isso, espero que funcione, se você nos der um exemplo de arquivo de log, eu posso verificar se ele funciona

awk '{cnt[$7]+=substr($12,1+match($12,"/")); i[$7]+=1}END{for (x in cnt){print x,cnt[x]/i[x]}}' access_log
    
por 22.06.2010 / 13:46