Depuis http://httpd.apache.org/docs/2.2/misc/perf-tuning.html
La RAM est le plus gros problème matériel affectant les performances du serveur Web. Un serveur Web ne devrait jamais avoir à échanger, car l'échange augmente la latence de chaque demande au-delà d'un point que les utilisateurs considèrent "assez rapide". Cela oblige les utilisateurs à arrêter et recharger, ce qui augmente encore la charge. Vous pouvez et devez contrôler le paramètre MaxClients afin que votre serveur ne génère pas autant d'enfants qu'il commence à échanger. Cette procédure est simple: déterminez la taille de votre processus Apache moyen, en consultant votre liste de processus via un outil tel que top, et divisez-la en votre mémoire totale disponible, en laissant de la place pour d'autres processus.
Le problème principal est que je ne comprends pas comment connaître la taille, car j'ai la taille de httpd sur plus de 3888
Mais, si nous devons déterminer le nombre de MaxClients, et que j'ai 4 Go de RAM, j'obtiens: 972, donc je devrais utiliser comme 900 dans les MaxClients?
la source
Réponses:
Tout d'abord, déterminez le PID de l'un de vos processus Apache.
Ensuite, vous pouvez faire quelque chose comme ceci:
cat /proc/PIDHERE/status | grep VmRSS
Cela donnera la taille (actuelle) de l'ensemble de résidents de ce processus particulier, semblable à:
VmRSS: 304456 kB
Cette valeur est telle qu'elle paraît, c'est la taille du processus résidant dans la RAM.
Normalisez ensuite votre unité de mesure (
4GB * 1024 * 1024 = 4,194,304 KB
). Diviser:4194304 KB / 304456 KB = 13.77 processes
Considérez que vous avez probablement d'autres processus en cours d'exécution sur votre système qui consomment également de la mémoire, et idéalement, vous voulez minimiser l'échange, donc vous ne voudriez probablement pas que 13 Apache MaxClients soient configurés (en utilisant mes numéros), vous voulez un peu moins (à votre discrétion) ).
Il s'agit d'une estimation brute; la taille de vos processus Apache peut augmenter avec le temps en fonction de la charge.
la source
Prédire les maxClients à partir de scénarios de test est un point de départ - mais pour résoudre correctement le problème, vous devez commencer à mesurer le comportement de votre application avec le trafic réel.
En supposant que votre apache fonctionne pré-fork ...
Configurez un travail cron pour compter le nombre de processus httpd et la sortie de «libre». Notez que si votre serveur Web fournit du contenu à partir de fichiers locaux (et dans de nombreux cas, même quand ce n'est pas le cas), la quantité de mémoire disponible pour le cache / les tampons aura un impact important sur les performances. c'est-à-dire que si vous arrivez au point de permuter, vos performances web sont probablement horribles!
Une fois que vous avez des données, tracez-les sur un graphique et effectuez une régression des moindres carrés dessus - extrapolez pour trouver le nombre de clients auxquels vous atteignez votre limite cible pour l'utilisation de la mémoire httpd. Un point de départ pour la cible mémoire serait le moindre de 80% de la mémoire physique / 80% de la taille du contenu.
(notez que si vous avez défini MinSpareServers sur une valeur très élevée, les résultats peuvent ne pas être précis)
Dans un monde idéal, vous mesureriez également le temps de réponse des URL dans le même fichier journal, mais cela devient beaucoup plus complexe.
la source