J'utilise un serveur Web amateur sur un ancien G3 / 300 bleu et blanc exécutant Debian PPC Squeeze 2.6.30. Les performances sont correctes pendant un certain temps après un redémarrage, mais elles finissent par s'enliser de plus en plus. À l'heure actuelle, la disponibilité est de 76 jours, et le principal coupable semble être l'utilisation de la mémoire de plus de 10 processus apache2.
Je pense que je dois diminuer les valeurs StartServers
, MinSpareServers
et / ou MaxSpareServers
, mais je ne suis pas sûr que l' on à régler, et il y a trois sections pour chaque fonction sur lequel module mpm est utilisé.
Comment puis-je savoir laquelle des sections suivantes je dois modifier et quelles sont les valeurs raisonnables étant donné que la boîte dispose de 448 Mo de mémoire physique (historique de mise à niveau étrange d'un 64, 128 et 256 sticks chacun)?
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 150
MaxRequestsPerChild 0
</IfModule>
<IfModule mpm_worker_module>
StartServers 2
MinSpareThreads 25
MaxSpareThreads 75
ThreadLimit 64
ThreadsPerChild 25
MaxClients 150
MaxRequestsPerChild 0
</IfModule>
<IfModule mpm_event_module>
StartServers 2
MaxClients 150
MinSpareThreads 25
MaxSpareThreads 75
ThreadLimit 64
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>
Il n'y a aucune autre instance de StartServers dans mon apache2.conf, mais aucun de ces modules mpm n'apparaît dans mods-available
ou mods-enabled
. Des idées?
Merci!
la source
Réponses:
400 Mo n'est pas beaucoup pour un serveur Web de nos jours - vous voudrez peut-être envisager de remplacer la boîte :)
Cela dit, si votre utilisation de la mémoire monte en flèche, vous avez probablement une fuite de mémoire quelque part - pour un test rapide, regardez la taille des processus httpd maintenant, puis arrêtez / démarrez Apache et voyez s'ils sont beaucoup plus petits. S'ils les regardent pendant quelques jours et voient s'ils grandissent.
S'il s'agit d'une fuite de mémoire, la vraie solution est de trouver et de réparer la fuite de mémoire, mais comme c'est généralement une douleur dans le cul, vous pouvez également vous ajuster
MaxRequestsPerChild
à autre chose que 0 (illimité). Cela tuera les travailleurs Apache lorsqu'ils auront traité un nombre fixe de demandes (les forçant à abandonner leur mémoire perdue dans le processus.Commencez avec des valeurs plus grandes (par milliers ou plus) et descendez par centaines. Si vous obtenez moins de 100 requêtes par enfant, votre fuite de mémoire est suffisamment importante pour justifier sa correction, car les performances de la suppression constante et de la réapparition des travailleurs apache seront importantes.
Re: quel mpm pour ajuster, la réponse est presque certainement
prefork
.Vous pouvez courir
httpd -V
et chercher laServer MPM:
ligne qui vous le dira à coup sûr.la source
Pour limiter l'utilisation de la mémoire du processus Apache, vous souhaiterez ajuster les MaxClients.
La règle générale est la suivante: (Mémoire maximale souhaitée) / (Utilisation de la mémoire pour 1 processus Apache) = # clients max.
En fin de compte, vous devez également ajuster votre pour être MaxSpareServers <= Max Clients .
L'utilisation de la mémoire d'un processus dépend fortement des modules que vous avez chargés (php et ainsi de suite), vous pouvez donc vouloir régler les clients Max un peu plus bas.
la source