Encontre o processo que trava o apache

2

Estou programando uma página web do PHP e comecei a ver algum comportamento estranho no meu computador, em algum momento apache / php leva muito tempo para mostrar a página no navegador (8 segundos), primeiro achei que era meu aplicativo que tinha um bug, então eu fiz uma função de depuração para acompanhar o tempo necessário para terminar o meu script, mas quando eu comecei a recarregar a página várias vezes (pressionando F5) notei que não era o meu script mas algum outro processo que barracas apache (ou php, ou mysql) e, em seguida, libera-lo porque pressionando F5 várias vezes mostram que, por vezes, o script termina rápido e às vezes é preciso muito:

[time_start] => Array
    (
        [0] => 1446841239.1471
        [1] => 0.0581
        [2] => 0.0589
        [3] => 0.0564
        [4] => 8.0531
        [5] => 0.0574
        [6] => 0.0621
        [7] => 8.0582
        [8] => 0.0548
        [9] => 8.0457
        [10] => 0.0755
        [11] => 8.0555
        [12] => 0.0512
        [13] => 8.0447
        [14] => 0.062
        [15] => 8.0905
        [16] => 0.0602
        [17] => 8.0556
        [18] => 0.0582
        [19] => 8.0492
        [20] => 0.0551
    )

Cada passo é o mesmo script que está sendo executado após a tecla F5 ser pressionada, e deve levar sempre o mesmo tempo, mas às vezes leva 8 segundos para terminar, e isso me incomoda porque quando parado, leva SEMPRE cerca de 8 segundos

Então a questão é, alguma idéia de como eu posso encontrar o processo que está atrasando meu script?

Ps.- Estou correndo um monte de coisas em primeiro plano porque é meu computador pessoal, mas mesmo quando eu uso apenas o navegador com nenhum outro aplicativo em execução ainda trava então tem que ser algo em execução no fundo, como pode eu acho isso?

    
por Chico3001 06.11.2015 / 21:43

1 resposta

2

Um consistente 8 segundos implica que algum procedimento potencialmente de longa duração tem um tempo limite definido. Sem saber o que o código PHP faz, vou adivinhar que você tem um tempo de DNS. Se o PHP estiver fazendo alguma E / S de rede ou algo assim, provavelmente acionará uma pesquisa de DNS. De vez em quando, você está vendo um tempo limite de consulta do DNS e o PHP fazendo o que quer que seja nessa eventualidade.

O único lugar em que vejo que os tempos limites de DNS estão definidos é em /etc/resolv.conf , ou talvez quando o código resolver(3) no GNU libc é compilado. Infelizmente, a página de manual para resolv.conf afirma que um tempo limite de 5 segundos é o padrão compilado, portanto, só posso dizer que estou achando isso.

    
por 06.11.2015 / 23:59