Apache utilise trop de mémoire de mon serveur, ce qui provoque son plantage. J'ai 4 Go de RAM sur le serveur.
J'essaie d'affiner les paramètres d'Apache afin d'améliorer ses performances, mais je suis assez nouveau dans ce domaine.
J'essayais de suivre les conseils de cet article mais je ne sais pas comment calculer les choses et il semble que j'aggrave.
Mon haut se lit comme suit:
11697 apache 15 0 322m 37m 4048 S 0.0 0.9 0:00.52 httpd
13602 apache 15 0 323m 37m 3944 S 0.0 0.9 0:00.50 httpd
11786 apache 15 0 322m 36m 4052 S 0.0 0.9 0:00.50 httpd
12525 apache 15 0 322m 36m 4040 S 0.0 0.9 0:00.63 httpd
11806 apache 15 0 322m 36m 3952 S 0.0 0.9 0:00.42 httpd
11731 apache 15 0 322m 36m 4036 S 0.0 0.9 0:00.46 httpd
11717 apache 16 0 322m 36m 3956 S 0.0 0.9 0:00.54 httpd
11659 apache 15 0 322m 36m 3980 S 0.0 0.9 0:00.49 httpd
Donc, ce serait
MaxClients = 3000/ (322-37) = 10
Est-ce correct? En outre, quelles devraient être les valeurs des autres paramètres tels que MinSpareServers, MaxSpareServers, MaxRequestsPerChild, StartServers, MinSpareThreads, MaxSpareThreads, ThreadsPerChild, MaxRequestsPerChild?
Quelqu'un pourrait-il m'aider?
Mettre à jour
J'ai essayé ce que vous avez suggéré. Cela fonctionne, mais juste pendant un certain temps. Après un certain temps après le démarrage du serveur, l'utilisation de la mémoire continue d'augmenter et ne diminue jamais.
Je veux dire, après avoir démarré le serveur, supposons qu'il y a 500 utilisateurs en ligne. Le serveur consommera X RAM. 2 heures après cela, avec les mêmes 500 utilisateurs en ligne, le serveur consommera 10X RAM.
Existe-t-il un moyen d'éviter cela ou je devrai continuer à surveiller le serveur et à le redémarrer de temps en temps?
la source
Réponses:
Le paramètre principal pour ajuster l'utilisation de la mémoire d'Apache sera
MaxClients
. Une valeur trop faible et vous manquerez d'emplacements disponibles pour répondre aux demandes des clients. Trop et vous utiliserez toute votre RAM et commencerez à utiliser l'espace de swap qui tuera les performances (cela peut sembler être un crash du serveur).Une façon de régler
MaxClients
est d'observer l'utilisation de la mémoire du système et d'ajuster la configuration en fonction des besoins. Si le serveur commence à échanger, modifiez-le. Si le serveur a de la mémoire disponible, installez-le.Vous pouvez également estimer la valeur maximale en examinant l'utilisation de la mémoire d'Apache. Démarrez
top
et appuyez surM
pour trier les processus par mémoire. Vous devriez voir quelque chose comme:Soustrayez les colonnes RES et SHR pour obtenir l'utilisation approximative de la mémoire par instance Apache. Dans ce cas, il est d'environ 16 Mo. Si j'ai 4 Go de RAM et souhaite que 3 Go soient utilisés pour Apache, mon paramètre MaxClients sera d'environ:
Donc, dans ce cas, je pourrais commencer avec une valeur de 150-200 mais je surveillerais l'utilisation de la mémoire et si cela commençait à se rapprocher de l'utilisation du swap, je diminuerais MaxClients de 10 à 20%. Notez également que la valeur de 3 Go n'est qu'un exemple aléatoire. Sur les serveurs exécutant uniquement Apache, je pourrais peut-être utiliser la quasi-totalité des 4 Go. Dans d'autres cas, je ne voudrais que 1 ou 2 Go pour Apache, sauf le reste pour d'autres applications, le système ou le cache.
Modifier: répondre à des questions supplémentaires
Il n'y a généralement aucune valeur magique de MaxClients ou des autres paramètres de configuration Apache qui rendra votre serveur soudainement deux fois plus rapide. Certains serveurs sembleront fonctionner très bien, que MaxClients soit 10 ou 1000. Il existe deux cas principaux où le paramètre MaxClients est "mauvais":
Bien que je ne connaisse pas les détails de votre serveur, application ou trafic, je peux suggérer les valeurs de configuration suivantes comme point de départ. Essayez-les, surveillez la charge et l'utilisation du serveur et modifiez les paramètres selon vos besoins.
la source