Après m'être gratté la tête en essayant de comprendre pourquoi mon site répondait si lentement même si les ressources du serveur sont correctes, j'ai finalement vérifié l'état d'Apache et trouvé:
78 requests/sec - 0.7 MB/second - 8.5 kB/request
256 requests currently being processed, 0 idle workers
Il semble que mon apache soit littéralement au maximum avec les connexions. Quiconque essaie de visiter mon site est mis sur une "liste d'attente" jusqu'à ce qu'Apache soit de nouveau libre.
Il semble que j'ai deux options.
A) Augmentez la limite maximale de connexions au-dessus de 256. Bien que selon cet article, ce ne soit pas si facile:
Par défaut, le paramètre MaxClients a une limite matérielle compilée de 256. Cela peut cependant être modifié en recompilant Apache. Certaines distributions ou sociétés d'hébergement élèvent cette limite à une valeur très élevée, comme 512 ou même 1024 afin de faire face à des charges importantes.
B) Localisez les scripts qui prennent trop de temps. Cela me semble beaucoup plus délicat, car la plupart des processus apache apparaissent et disparaissent à nouveau. De plus, les scripts PHP de mes sites sont assez bien optimisés ... et encore une fois, les ressources du serveur sont très bien:
Server load 2.69 (8 CPUs)
Memory Used 25.33% (2,039,108 of 8,048,804)
Swap Used 1.32% (54,156 of 4,095,992)
Quelle option (si l'une d'entre elles) dois-je choisir et comment dois-je la faire?
ÉDITER
Plus d'informations: Version du serveur: Apache / 2.2.23 (Unix) mod_ssl / 2.2.23 OpenSSL / 1.0.0-fips DAV / 2 mod_auth_passthrough / 2.1 mod_bwlimited / 1.4 FrontPage / 5.0.2.2635
HTTP Conf: http://pastebin.com/yBeLt6mP
Exemple de demande Parital: http://pastebin.com/vzUVDMPR
Basculez Text-Wrap si les bacs de collage apparaissent bizarres.
la source
Réponses:
Cet article est inexact;
MaxClients
peut être élevé au-dessus de 256 lors de l'utilisation du MPM préfork (c'est ce que je suppose que vous utilisez actuellement en fonction de votre description du problème). De la documentation :ServerLimit
est celui qui a la limite compilée en dur, mais c'est bien passé où vous devriez jamais atteindre sans que votre serveur ne rencontre un autre goulot d'étranglement. Documentation :Donc, si vous souhaitez augmenter la limite de votre client à quelque chose comme 512, alors:
Vous devriez également regarder quel MPM vous utilisez, car les MPM autres que prefork sont mieux adaptés à l'échelle. Voir ici pour plus d'informations.
la source
httpd -l
. Je suppose que cela signifie que j'exécute MPM travailleur?MaxClients
,ServerLimit
,ThreadsPerChild
etThreadLimit
. Pouvez-vous fournir votre configuration de travailleur actuellehttpd.conf
?Je suggère que vous utilisiez un proxy inverse, quelque chose comme nginx ou lighttpd peut gérer beaucoup plus de connexions qu'apache. Selon la façon dont vos sites utilisent htaccess, vous pouvez également utiliser nginx / lighttpd avec fcgi et renoncer complètement à apache.
la source
httpd.conf
et votre solution consiste à extraire la plupart des logiciels qu'il exécute et à les remplacer?! Chaque logiciel a ses problèmes, mais une mauvaise utilisation non instruite aggrave les problèmes.