En gros, il y a deux façons de traiter plus de demandes et de servir plus rapidement. La première consiste à écrire un code extrêmement efficace. L'autre consiste à avoir un service (serveur) extrêmement efficace. Vous pouvez essayer d'obtenir le meilleur des deux, mais c'est difficile à réaliser. La plupart des sites se situent quelque part entre ces deux extrêmes. Pour ces deux approches, je peux recommander de passer complètement à nginx, si ce n'est pour servir uniquement vos fichiers statiques, car nginx surpasse Apache dans ces deux domaines d'un ordre de grandeur. nginx est un serveur non bloquant et n'a pas la surcharge de php pour servir les fichiers non php, contrairement à Apache.
Les nouveaux programmeurs et les amateurs ont tendance à développer avec des cadres et des plateformes préétablis. Ces codes ne sont pas optimaux car ils sont destinés à servir un large public. Ce groupe de personnes adopte le point de vue de l'optimisation de leur service (serveurs) car ils ne peuvent pas quitter leur cadre et donc ne peuvent pas optimiser entièrement leur code. Dans cette approche, dans le contexte de nginx sur linux, vous pouvez régler votre serveur pour en tirer le maximum de performances :
-
Vous devriez optimiser votre pile tcp qui est fournie avec votre système d'exploitation.
-
Augmenter le nombre de descripteurs de fichiers ouverts.
-
Vous pourriez vouloir placer votre répertoire www sur un disque RAM.
-
Si vous décidez d'utiliser nginx, vous voudrez augmenter les connexions et les processus des travailleurs dans nginx et le nombre de travailleurs.
-
Vous voudrez probablement mettre en place une mise en cache pour compenser un code mal écrit.
-
Vous utilisez actuellement APC qui est un cache d'objet, vous pourriez vouloir mettre en place une page en utilisant APC également, ce qui vous permettra d'obtenir des améliorations d'un ordre de grandeur.
-
Vous pourriez vouloir mettre en mémoire les requêtes de votre base de données, ce qui devrait permettre d'éliminer les goulots d'étranglement de la base de données.
-
Utilisez des tampons plus grands dans votre serveur web et de base de données.
L'autre groupe, généralement des programmeurs expérimentés qui écrivent leur propre code depuis le début, ou qui peuvent le faire plus tard, essaient d'écrire un code super efficace et de faire preuve de minimalisme dans leurs efforts de "conception" pour obtenir des réponses http allégées qui fonctionnent de manière optimale sur n'importe quelle pile. Je n'ai pas de conseils à donner ici mais simplement à suggérer de suivre les meilleures pratiques des autorités dans le domaine respectif. Cependant, je peux vous raconter l'histoire de Facebook à cet égard.
Facebook est une histoire emblématique de la progression de l'optimisation des serveurs vers l'optimisation du code. Construit à l'origine en PHP avec Apache, le site a rapidement rencontré des problèmes de performance, et c'est à ce moment-là qu'il a commencé à optimiser fortement ses serveurs. Le système d'exploitation, la pile PHP, tout a été optimisé. Bientôt, ils ont dû commencer à utiliser memcache, ce qui était assez récent dans ma mémoire. Mais à peine ont-ils commencé à connaître à nouveau des interruptions de service. À ce moment-là, comme ils ne pouvaient plus optimiser PHP lui-même, ils l'ont compilé en code machine ! Ce qui est la fin de la ligne en ce qui concerne les améliorations. Maintenant ils peuvent seulement ajouter plus de serveurs. A moins qu'ils ne changent de langage. Ce qui, à un moment donné, cessera également d'apporter des avantages.
Ce sont donc les deux options qui s'offrent à vous. Choisissez sagement !
Enfin, je peux ajouter que vous devriez suivre l'ensemble des règles et directives pratiques de Yahoo Yslow et Google Pagespeed pour améliorer les performances. Minimisez vos JS, HTML, PHP, CSS, et placez-les en haut et en bas de page en conséquence. Utilisez un CDN. Concevez des pages plus légères, etc. Bonne chance !