Avantages de nginx utilisant un modèle multi-processus
Tout d'abord, pour chaque processus de travail , il est indépendant. Le processus n'a pas besoin d'être verrouillé, donc la surcharge causée par le verrouillage est éliminée. En même temps, ce sera beaucoup plus pratique lors de la programmation et de la recherche de problèmes. (Apprentissage recommandé : Utilisation de Nginx)
Deuxièmement, l'utilisation de processus indépendants ne s'affectera pas les uns les autres. Après la fin d'un processus, les autres processus fonctionneront toujours et le service ne sera pas interrompu. le processus maître démarrera rapidement un nouveau processus de travail.
Bien sûr, si le processus de travail se termine anormalement, il doit y avoir un bug dans le programme. Une sortie anormale entraînera l'échec de toutes les demandes sur le travailleur actuel, mais cela n'affectera pas toutes les demandes, le risque est donc nul. réduit.
Modèle d'événement multi-processus nginx : asynchrone et non bloquant
Bien que nginx utilise une approche multi-travailleurs pour gérer les requêtes, il existe un seul dans chaque travailleur Le thread principal, mais nginx utilise une méthode asynchrone et non bloquante pour traiter les requêtes. En d'autres termes, nginx peut gérer des milliers de requêtes en même temps.
Le nombre de requêtes qu'un processus de travail peut traiter en même temps n'est limité que par la taille de la mémoire, et en termes de conception architecturale, il n'y a presque aucune limite de verrouillage de synchronisation lorsque différents processus de travail gèrent des requêtes simultanées. Les processus de travail ne s'endorment généralement pas.
Par conséquent, lorsque le nombre de processus sur Nginx est égal au nombre de cœurs de processeur (il est préférable que chaque processus de travail soit lié à un cœur de processeur spécifique), le coût de commutation entre les processus est minime.
Quant à la méthode de travail courante d'Apache (Apache a également une version asynchrone non bloquante, mais elle n'est pas couramment utilisée car elle entre en conflit avec certains de ses propres modules), chaque processus n'en traite qu'un seul. demande à la fois.
Par conséquent, lorsque le nombre de concurrence atteint plusieurs milliers, il y aura des milliers de processus traitant les requêtes en même temps. C'est un grand défi pour le système d'exploitation. La mémoire occupée par le processus est très importante et la surcharge du processeur causée par le changement de contexte du processus est naturellement très importante, les performances ne peuvent pas être améliorées et ces surcharges n'ont aucun sens. .
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!