Por que o combo PHP / Apache faz tantos gettimeofday
syscalls? Mesmo sendo rápido, todas as chamadas são chamadas que devem ser contabilizadas.
Apenas uma rápida strace -c -p [apache2 process id]
, fornece o seguinte:
Process 22294 detached
% time seconds usecs/call calls errors syscall
------ ----------- ----------- --------- --------- ----------------
98.52 0.010000 51 196 poll
1.48 0.000150 0 20752 gettimeofday
0.00 0.000000 0 94 7 read
0.00 0.000000 0 48 write
0.00 0.000000 0 96 32 open
0.00 0.000000 0 75 close
0.00 0.000000 0 6 chdir
0.00 0.000000 0 766 time
0.00 0.000000 0 2 chmod
0.00 0.000000 0 56 10 access
Aquelas chamadas de 20K me preocupam. Alguém quer lançar alguma luz sobre isso?
apache-2.2
php
Gekkie
fonte
fonte
Respostas:
Gettimeofday é chamado principalmente pelo Apache para registrar entradas em arquivos de depuração. Alguns módulos também usam gettimeofday. Portanto, nada para se preocupar.
EDIT: Eu fiz uma digitação do código fonte php e obtive os seguintes resultados: A maioria das funções php relacionadas ao tempo usará a hora do sistema. Como eles usam a hora do sistema, gettimeofday será chamado muito; portanto, se você quiser reduzir as chamadas, reduza as funções relacionadas à hora.
Devo observar, no entanto, que outras funções também fazem chamadas para horário do dia. Por exemplo, se você usar php_session_start, isso (algumas vezes, dependendo de alguns parâmetros como se fosse uma nova sessão, ...) fará uma chamada para php_combined_lcg, que por sua vez fará uma chamada para lcg_seed se não houver um valor inicial definido como obtenha um número pseudo-aleatório. E o lcg_seed fará uma chamada para horário do dia. Mantenha isso em mente.
fonte
xdebug
instalou, também pode ser um subproduto.Eu descobri que ter o módulo php xdebug habilitado faz com que o strace relate várias
gettimeofday
chamadas.fonte
Todo processo que requer um registro de data e hora chama gettimeofday, portanto, é difícil saber se é normal ou não.
Por exemplo, pode ser um módulo que cria um log, um módulo que verifica a hora ... Na verdade, no seu caso, para saber por que existem tantos gettimeofday, desative os módulos apache que podem ser responsáveis por chamar gettimeofday. Talvez haja muitas gravações em vários arquivos de log localizados em pastas diferentes.
fonte