Forge Forge/ Apache Check  par Franck Hisbergue
  Se connecter  -  Fr / En
FAQ

Pourquoi le script écrit MaxRequestWorkers / MaxClients ? Lequel des deux dois-je utiliser ?

MaxRequestWorkers était appelé MaxClients avant la version 2.3.13 d'Apache. L'ancien nom est encore supporté dans les versions plus récentes.
Si vous avez une version 2.3.13 ou plus récente, utilisez MaxRequestWorkers, sinon utilisez MaxClients.

Que veut dire Estimated residual disk IO speed ? Le fabricant de mon disque SSD me dit que la vitesse du disque est d'environ 300Mo/s, pourquoi ApacheCheck ne mesure que 7Mo/s ?

Premièrement, le fabricant donne la vitesse maximal de tranfert du disque, dans les meilleures conditions. Généralement, la vitesse de transfert est obtenue lors du tranfert de très gros fichiers, mais un serveur Apache lit et écrit principalement de petits fichiers. Pour simuler au mieux les tranferts en activité réelle, le script ApacheCheck copie des fichiers allant de 256 octects à 512ko. Le résultat de cette mesure est, bien entendu, une estimation.
Ensuite, le script mesure la vitesse de transfert pendant l'activité normale du système, c'est à dire pendant que le serveur fait déjà des lectures/écritures sur le disque, c'est pourquoi le script ne mesure qu'une vitesse de tranfert résiduelle.

La mesure de vitesse de tranfert disque prend du temps, est-il possible de faire sans ?

Oui, il suffit d'ajouter l'option -d à la ligne de commande : php apachecheck.php -d
Utilisez –help en ligne de commande pour obtenir la liste de toutes les options disponibles.

Le script se fige pendant une ou deux minutes, puis finalement affiche le résultat. Pourquoi ?

Peut-être la mesure de vitesse de transfert du disque prend du temps si le disque est très lent, mais il est davantage probable que votre serveur ne dispose pas d'un accès internet. Le script utilise internet pour deux raisons : récupérer l'adresse IP externe du serveur (affichage uniquement), et rechercher si une nouvelle version du script existe.
Vous pouvez essayer de désactiver ces lectures internet en utilisant l'option -i de la ligne de commande comme suit : php apachecheck.php -i

Le script ne fonctionne pas sur mon serveur, je ne sais pas pourquoi...

Regardez attentivement les affichages du script, la raison est probablement expliquée.
Votre distribution utilise peut-être des répertoires spécifiques ou utilise une façon particulière d'exécuter Apache. Vous pouvez ouvrir un ticket et indiquer le problème en donnant le maximum d'informations. Si c'est faisable, un patch sera développé pour supporter votre distribution.

Mon Apache a beaucoup de fichiers de configuration, comment puis-je voir l'intégralité du contenu de ces fichiers ?

Utilisez l'option -a (--apache-config) de la ligne de comande comme suit : php apachecheck.php -a
Le contenu de tous les fichiers de configuration sera affiché après les sorties habituelles du script.

J'ai un CPU avec 4 cores hyperthreading (linux dit qu'il y a 8 cores), pourquoi le script affiche que le maximum CPU est 520% ?

Sur un serveur avec un CPU avec un coeur, un programme ne peut consommer qu'entre 0% et 100%.
Sur un serveur avec un CPU avec deux coeurs, un programme ne peut consommer qu'entre 0% et 200%.
Sur un serveur avec un CPU avec deux coeurs hyperthreading, l'hyperthreading apporte deux coeurs supplémentaires, mais qui ne sont pas de véritables coeurs. Ils aident au changement rapide de contexte entre threads, et apportent donc un gain avoisinant les 30%. Sur ce serveur, l'utilisation maximale est donc : 2x 100% pour les vrais coeurs + 2 x 30% pour l'hyperthreading, soit un total de 260%.
Sur un serveur avec un CPU 4 coeurs hyperthreading, le maximum est 520% (4 x 100% + 4 x 30%). Bien entendu, ce n'est pas une valeur très fiable, mais c'est bien meilleur que de considérer que 8 coeurs = 800%.

J'exécute le script plusieurs fois, pourquoi la valeur maximale de MaxRequestWorkers / MaxClients change-t-elle ?

Les résultats du script dépendent de l'activité du serveur au moment où le script est exécuté. Le script mesure l'utilisation CPU, disque et mémoire, et extrapole ensuite pour trouver les limites du serveur. Si l'activité du serveur change, les résultats changeront également.
Il est donc judicieux de lancer le script quand le serveur a une activité normale.
Par exemple, si les visiteurs de votre site internet viennent principalement sur le site en soirée, il est préférable d'attendre le soir pour lancer le script.
Les résultats peuvent aussi changer si le serveur est exceptionnellement occupé à faire quelque chose qui n'est pas en relation avec Apache (par exemple s'il fait beaucoup de lectures/écritures sur le disque).

Pourquoi est-il conseillé de mettre HostnameLookups à Off ?

Si vous n'avez pas réellement besoin de résolutions DNS, et afin de préserver du traffic réseau et d'améliorer l'expérience des utilisateurs (qui n'auront pas à attendre que la requête DNS aboutisse), les serveurs chargés devraient avoir cette directive à Off. Une requête DNS prend un peu de temps, des milliers de requêtes DNS peuvent prendre beaucoup de temps.

Pourquoi mettre ServerSignature à Off ?

Si ServerSignature est à On, une ligne est ajoutée en fin de page des documents générés par Apache (pages d'erreur, pages de liste de fichiers...), incluant la version d'Apache et le ServerAdmin email. Ce n'est pas un gros problème, mais il est préférable de ne pas donner ce genre d'informations à des gens éventuellement mal-intentionnés.

Est-il dangereux d'activer BufferedLogs ?

Avant la version 2.4 d'Apache, BufferedLogs était marqué comme expérimental, mais beaucoup de gens l'ont utilisé sans rencontrer de problèmes. En version 2.4, BufferedLogs n'est plus marqué comme expérimental.
BufferedLogs fait en sorte que plusieurs entrées du fichier de log soient écrites en même temps sur le disque, réduisant ainsi le nombre d'écritures nécessaires. Mais vous devez savoir qu'un crash soudain d'Apache peut alors entraîner la perte des dernières entrées de log.

Pourquoi MaxConnectionsPerChild / MaxRequestsPerChild ne devrait pas être égal à zéro ?

MaxConnectionsPerChild était appelé MaxRequestsPerChild avant la version 2.3.9 d'Apache. L'ancien nom est encore supporté.
Si MaxConnectionsPerChild a une valeur supérieure à zéro, le processus sera tué (puis remplacé par un autre) après MaxConnectionsPerChild connections, ce qui évite une éventuelle consommation intégrale de la mémoire en cas de fuite mémoire accidentelle du processus.

Comment est calculé la moyenne de l'utilisation mémoire par processus enfant d'Apache ? (average memory usage per Apache child)

Sur un serveur Apache en activité normale, les processus enfant d'Apache sont de deux sortes : ceux qui ont (ou ont eu) une activité, et ceux créés par la directive MinSpareThreads et en attente d'activité. Ces seconds ne sont pas utilisés dans le calcul.
L'utilisation mémoire par processus enfant d'Apache est la somme des usages mémoires des processus enfant d'Apache + (utilisation mémoire par thread Mysql / nombre de processus enfant d'Apache) + (utilisation mémoire des processus PHP-FPM / nombre de processus enfant d'Apache) + ...
L'objectif est d'estimer la mémoire nécessaire par les activitées issues d'un processus enfant Apache afin que des extrapolations puissent être faites.

Comment est calculée la valeur maximale de MaxRequestWorkers / MaxClients pour le serveur ?

Trois valeurs sont calculées : une valeur basée sur l'utilisation CPU, une basée sur les lectures/écritures sur le disque, et une basée sur l'utilisation mémoire. La plus petite de ces valeurs est utilisée comme limite du serveur.
Le script estime les besoins par processus enfant d'Apache (basé sur les processus Apache eux-mêmes, mais aussi sur ceux de MySql, de PHP-FPM...).
Pour l'utilisation mémoire, deux valeurs sont utilisées : usage mémoire moyen, et usage mémoire maximal. La valeur moyenne peut sous-estimer l'usage mémoire réel, alors que l'usage mémoire maximal la sur-estime certainement. La vérité est probablement entre ces deux valeurs.

J'ai une question et je ne la trouve pas dans cette FAQ, que faire ?

Ouvrez simplement un ticket !

Xulops Forge - Page faq