Por que tantas chamadas gettimeofday?

10

Por que a combinação PHP / Apache faz tantos gettimeofday syscalls? Mesmo que seja rápido cada chamada é uma chamada que deve ser contabilizada.

Apenas um strace -c -p [apache2 process id] rápido, indica 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

Essas ligações de 20K me preocupam. Alguém se importa em lançar alguma luz sobre isso?

    
por Gekkie 19.03.2013 / 13:17

3 respostas

4

O Gettimeofday é chamado principalmente pelo Apache para registrar entradas em arquivos de depuração. Além disso, alguns módulos usam gettimeofday. Então, nada para se preocupar.

EDITAR: Eu fiz alguns digitação de código-fonte php e surgiu com 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, então se você quiser reduzir as chamadas, reduza suas funções relacionadas ao tempo.

Eu tenho que observar que outras funções também fazem gettimeofday-calls. Por exemplo, se você usar php_session_start, isso (às vezes, dependendo de alguns parâmetros como se uma nova sessão, ...) fazer uma chamada para php_combined_lcg que fará por sua vez uma chamada para lcg_seed se não houver valor inicial definido como obter um número pseudo aleatório. E o lcg_seed fará uma chamada gettimeofday. Tenha isso em mente.

    
por 03.04.2013 / 00:04
1

Descobri que ter o módulo php, xdebug, ativado faz com que o strace informe várias chamadas gettimeofday .

    
por 20.07.2017 / 12:44
1

Todo processo que requer um timestamp chama gettimeofday, então é 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 ... De fato, no seu caso, para saber por que existem tantos gettimeofday, desabilite os módulos do apache que poderiam ser responsáveis por chamar o gettimeofday. Talvez haja muitas gravações em vários arquivos de log localizados em pastas diferentes.

  • Desabilite os suspeitos comuns como mod_log_debug ou mod_status
  • Recarregar configuração do Apache
  • strace
por 03.05.2015 / 18:27