J'exécute un site très fréquenté avec beaucoup de contenu dynamique, principalement généré par les utilisateurs.
Le serveur est un serveur dédié et dispose d'un total de 4 processeurs Intel (R) Xeon (R) CPU X3210 @ 2,13 GHz. J'ai besoin de connaître les valeurs optimales pour les directives de ServerLimit et MaxClients apache, étant donné que le serveur dispose de 4 Go de RAM et que la base de données MySQL s'exécute sur un serveur distinct. Le panneau est DirectAdmin avec CentOS.
Voici mes directives actuelles, mais pendant les heures de pointe avec plus de 5 000 utilisateurs, un retard important est remarqué - et ce n'est pas entièrement la faute de MySQL, car les pages semblent être générées rapidement (j'ai implémenté un compteur de temps de génération de page), mais il y a un long délai de connexion jusqu'à ce que la page commence à répondre et soit envoyée au navigateur.
<IfModule prefork.c>
StartServers 800
MinSpareServers 20
MaxSpareServers 60
ServerLimit 900
MaxClients 900
MaxRequestsPerChild 2000
</IfModule>
Timeout 90
KeepAlive On
KeepAliveTimeout 5
Je dois mentionner que la surveillance du serveur à l'aide de la commande supérieure, l'utilisation du processeur ne dépasse jamais 20% ~ 30% aux heures de pointe. Le serveur MySQL a également une utilisation de 30 à 50% à ce moment-là, et je travaille constamment sur la correction des requêtes lentes, mais c'est un problème différent. Je sais que ce n'est pas un goulot d'étranglement DB, car les pages statiques prennent également beaucoup de temps à se charger aux heures de pointe.
Tous les conseils pour optimiser ces valeurs seront grandement appréciés, merci.
la source
Vous devez obtenir la taille moyenne de votre processus Apache. Avec ce nombre et la taille totale de votre RAM, vous pouvez calculer la directive MaxClients. Rappelez-vous ceci: "Un serveur Web ne devrait jamais avoir à échanger" ( Apache Performance Tuning )
La surveillance avec top ou htop est ok mais vous avez besoin d'une meilleure vue de toutes les statistiques de vos serveurs (cpu, ram, E / S disque, demandes apache, requêtes lentes mysql, etc ...) avec un outil de surveillance comme ganglia ou munin pour trouver d'éventuels goulots d'étranglement.
la source
Je recommande de jouer avec l'outil de référence (ab) d'Apache. Vous pouvez jouer avec les valeurs pour les faire correspondre à votre flux de trafic et voir quel type de réponses vous obtenez en ce qui concerne le temps de chargement moyen, etc. À ce stade, vous pouvez jouer avec les paramètres dont vous parlez pour essayer de les optimiser. Vous devriez être en mesure avec ab d'obtenir une idée des performances optimales pour chaque ajustement des performances.
Il ne serait pas vraiment prudent pour moi de parler de vos paramètres, mais vous devez également prendre en compte votre RAM car il semble que vous mangez beaucoup de RAM avec ces paramètres. Bien que ce ne soit que de la spéculation sans aucune donnée. htop vous donne une bonne lecture visuelle de vos ressources.
Votre moyenne de charge pourrait également en dire long. Je doute que votre utilisation soit beaucoup plus élevée que votre quantité totale de cœurs de 20 à 30% de processeur, mais c'est un autre indicateur de la puissance de votre serveur.
la source