Pourquoi le combo PHP / Apache fait-il autant d' gettimeofday
appels système? Même si vous êtes rapide, chaque appel est un appel qui doit être pris en compte.
Juste un rapide strace -c -p [apache2 process id]
, donne ce qui suit:
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
Ces 20 000 appels m'inquiètent. Quelqu'un veut-il faire la lumière là-dessus?
apache-2.2
php
Gekkie
la source
la source
Réponses:
Gettimeofday est principalement appelé par Apache pour enregistrer les entrées dans les fichiers de débogage. Certains modules utilisent également gettimeofday. Donc, rien à craindre.
EDIT: J'ai fait quelques recherches de code source php et est arrivé aux résultats suivants: La plupart des fonctions php liées au temps utiliseront l'heure du système. Puisqu'ils utilisent l'heure système, gettimeofday sera appelé beaucoup, donc si vous voulez réduire les appels, réduisez vos fonctions liées au temps.
Je dois cependant remarquer que d'autres fonctions font également des appels gettimeofday. Par exemple, si vous utilisez php_session_start, cela va (parfois, en fonction de quelques paramètres comme si une nouvelle session, ...) appeler Php_combined_lcg qui fera à son tour un appel à lcg_seed s'il n'y a pas de valeur de départ définie sur obtenir un nombre pseudo aléatoire. Et lcg_seed fera un appel gettimeofday. Garde ça en tête.
la source
xdebug
installé, il peut également en être un sous-produit.J'ai découvert que l'activation du module php, xdebug, obligeait strace à signaler plusieurs
gettimeofday
appels.la source
Tout processus nécessitant un horodatage appelle gettimeofday, il est donc difficile de savoir s'il est normal ou non.
Par exemple, ça peut être un module qui crée un journal, un module qui vérifie l'heure ... En fait, dans votre cas, pour savoir pourquoi il y a tant de gettimeofday, désactivez les modules apache qui pourraient être chargés d'appeler gettimeofday. Il y a peut-être trop d'écritures dans de nombreux fichiers journaux situés dans différents dossiers.
la source