Encontre o processo que paralisa o Apache

Encontre o processo que paralisa o Apache

Estou programando uma página web em PHP e comecei a ver algum comportamento estranho no meu computador, em algum momento o apache/php demora muito para mostrar a página web no navegador (8 segundos), primeiro pensei que era minha aplicação que tinha um bug, então fiz uma função debug para controlar o tempo necessário para finalizar meu script, mas quando comecei a recarregar a página várias vezes (pressionando F5) notei que não era meu script e sim algum outro processo que paralisa o apache ( ou php, ou mysql) e depois libera porque apertar F5 várias vezes mostra que às vezes o script termina rápido e às vezes demora 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 etapa é o mesmo script executado após F5 ser pressionado, e deve levar sempre o mesmo tempo, mas às vezes leva 8 segundos para terminar, e isso me incomoda porque quando está parado SEMPRE leva cerca de 8 segundos

Portanto, a questão é: alguma idéia de como posso encontrar o processo que está paralisando meu script?

Ps.- Estou executando muitas coisas em primeiro plano porque é meu computador pessoal, mas mesmo quando uso apenas o navegador sem nenhum outro aplicativo em execução ele ainda trava, então deve ser algo rodando em segundo plano, como posso encontrá-lo ?

Responder1

8 segundos consistentes implicam que algum procedimento potencialmente de longa execução tem um tempo limite definido. Sem saber o que o código PHP faz, vou adivinhar que você tem um horário de DNS. Se o PHP estiver realizando alguma E/S de rede ou algo assim, provavelmente acionará uma pesquisa de DNS. De vez em quando, você vê o tempo limite de uma consulta DNS e o PHP faz o que quer que faça nessa eventualidade.

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

informação relacionada