¿Por qué el combo PHP / Apache hace tantas gettimeofday
llamadas al sistema? Aunque son rápidas, cada llamada es una llamada que debe tenerse en cuenta.
Solo un rápido strace -c -p [apache2 process id]
, da lo siguiente:
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
Esas 20K llamadas me preocupan. ¿Alguien quiere arrojar algo de luz sobre esto?
apache-2.2
php
Gekkie
fuente
fuente
Respuestas:
Apache llama principalmente a Gettimeofday para registrar entradas en archivos de depuración. También algunos módulos usan gettimeofday. Así que no hay nada por lo que preocuparse.
EDITAR: Realicé algunas excavaciones del código fuente de php y obtuve los siguientes resultados: la mayoría de las funciones de php relacionadas con el tiempo usarán la hora del sistema. Como usan la hora del sistema, se llamará mucho a gettimeofday, por lo que si desea reducir las llamadas, reduzca sus funciones relacionadas con el tiempo.
Sin embargo, debo comentar que otras funciones también hacen llamadas gettimeofday. Por ejemplo, si usa php_session_start, esto (a veces, dependiendo de algunos parámetros como si fuera una nueva sesión, ...) realizará una llamada a php_combined_lcg, que a su vez hará una llamada a lcg_seed si no hay un valor de inicialización establecido en obtener un número pseudoaleatorio. Y lcg_seed hará una llamada a gettimeofday. Mantén esto en mente.
fuente
xdebug
instalado, también puede ser un subproducto.He descubierto que tener el módulo php, xdebug, habilitado hace que strace informe varias
gettimeofday
llamadas.fuente
Cada proceso que requiere una marca de tiempo llama a gettimeofday, por lo que es difícil saber si es normal o no.
Por ejemplo, puede ser un módulo que cree un registro, un módulo que verifique la hora ... De hecho, en su caso, para saber por qué hay tantos gettimeofday, desactive los módulos de apache que podrían ser responsables de llamar a gettimeofday. Quizás haya demasiadas escrituras en numerosos archivos de registro ubicados en diferentes carpetas.
fuente