Nginx est un serveur Web hautes performances capable de gérer un grand nombre de requêtes simultanées en même temps. Il combine un mécanisme multi-processus et un mécanisme asynchrone. Le mécanisme asynchrone utilise une méthode asynchrone non bloquante.
(Tutoriel recommandé : Tutoriel nginx )
Ce qui suit est une introduction au mécanisme multithread de Nginx et au mécanisme asynchrone non bloquant.
1. Mécanisme multi-processus
Chaque fois que le serveur reçoit un client, le processus maître du serveur génère un processus enfant (processus de travail) Sortez et établissez une connexion avec le client doit interagir jusqu'à ce que la connexion soit déconnectée et que le sous-processus se termine.
L'avantage de l'utilisation de processus est que chaque processus est indépendant les uns des autres et ne nécessite pas de verrouillage, ce qui réduit l'impact de l'utilisation de verrous sur les performances, tout en réduisant la complexité de programmation et les coûts de développement.
Deuxièmement, l'utilisation de processus indépendants peut empêcher les processus de s'affecter les uns les autres. Si un processus se termine anormalement, les autres processus fonctionneront normalement et le processus maître démarrera rapidement un nouveau processus de travail pour garantir que le service n'est pas interrompu. . s'interrompra, minimisant les risques.
Inconvénients :
La génération d'un processus enfant par le système d'exploitation nécessite une copie de la mémoire et d'autres opérations, ce qui entraînera une certaine surcharge en ressources et en temps. Lorsqu'il y a un grand nombre de requêtes, les performances du système diminuent.
2. Mécanisme non bloquant asynchrone
Chaque processus de travail utilise le mode non bloquant asynchrone et peut gérer plusieurs requêtes client.
Lorsqu'un processus de travail reçoit une demande du client, il appelle IO pour traitement. Si le résultat ne peut pas être obtenu immédiatement, il traitera d'autres demandes (c'est-à-dire non bloquantes et le client ne le fera pas) ; Vous devez attendre pendant cette période. En réponse, vous pouvez gérer d'autres choses (c'est-à-dire asynchrones).
Lorsque IO revient, ce processus de travail sera notifié ; le processus est notifié et suspend temporairement la transaction en cours de traitement pour répondre à la demande du client.
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!