Pourquoi Nginx est-il si efficace et si rapide ?
Principe de conception
Un serveur hautes performances se caractérise généralement par une vitesse de traitement élevée et une faible utilisation des ressources, surtout lorsqu'il y en a. des dizaines de milliers de connexions en ligne en même temps. Pour obtenir une vitesse de traitement rapide, la conception d'un modèle de concurrence est particulièrement critique
Le degré de concurrence des serveurs dépend de deux facteurs : l'un est le nombre de processus connectés au serveur. le serveur, et l'autre est le nombre de processus que chaque processus peut traiter en même temps. Le nombre de requêtes simultanées, donc le modèle de concurrence du serveur se compose de deux parties, la méthode de fourniture de services et le mécanisme de traitement des liens
En raison de ces deux méthodes uniques, Nginx fonctionne bien parmi le même type de serveurs Web
Méthode de connexion
Généralement, les méthodes de connexion au serveur Web sont divisées en trois types : méthode multi-processus, méthode multi-thread et méthode asynchrone. Le multi-processus nécessite une surcharge supplémentaire telle que la copie de mémoire, tandis que le multi-threading ne nécessite pas de surcharge
Asynchrone utilise une méthode non bloquante pour communiquer avec chaque client. Le serveur utilise un processus pour l'interrogation. Processus de travail de Nginx. Parmi eux, le plus efficace est asynchrone, le plus stable est multi-processus et le moins occupant des ressources est multi-threading
Nginx fournit des services basés sur le modèle d'événement (mode asynchrone), ce qui est plus adapté au nombre de connexions par seconde et au nombre de requêtes pour être non linéaire en même temps, situation de croissance. Même si la charge augmente, le nombre d’événements d’utilisation de la mémoire et du processeur reste prévisible. Nginx peut gérer des dizaines de milliers de connexions simultanées sur un serveur utilisant du matériel ordinaire. C'est la première raison des hautes performances de Nginx.
Autres choses que Nginx fait
En plus des deux principes ci-dessus, il existe de nombreuses optimisations de détails visibles en interne, en utilisant un processus unique multi-processus méthode de travail des threads, et L'affinité entre le CPU et le processus est utilisée pour lier le processus à un CPU spécifique, évitant ainsi le coût du changement de contexte de processus, réduisant ainsi l'utilisation du CPU. De plus, il implémente un pool de mémoire efficace, minimisant l'utilisation de la mémoire, etc.
Mécanisme de traitement des connexions
Il existe cinq modèles de connexion Linux, io synchrone, blocage des frais de synchronisation io, io bloquant asynchrone (multiplexage io), io asynchrone non bloquant (io piloté par signal ou asynchrone)
Voici les points clés :
<1> O multiplexage Lors de l'utilisation du modèle, vous utiliserez la fonction de sélection ou d'interrogation. Ces deux fonctions bloqueront également le processus. Différentes du blocage des E/S, elles peuvent également bloquer plusieurs opérations d'E/S en même temps, et elles peuvent effectuer. plusieurs opérations de lecture en même temps. Les fonctions d'E/S de plusieurs opérations d'écriture sont détectées, et la fonction d'opération d'E/S n'est pas réellement appelée tant que les données ne sont pas lisibles ou inscriptibles.
Dans le modèle de réutilisation io, select et poll sont généralement pris en charge par les systèmes d'exploitation, mais chaque fois que vous attendez, vous devez configurer l'interface de socket qui doit être attendue, et l'implémentation interne n'est pas efficace assez, ce qui rend difficile le paiement d'une surveillance à haute concurrence. Ensemble de sockets, différents systèmes d'exploitation utilisent différentes techniques d'interrogation avancées pour prendre en charge une surveillance haute performance, ces méthodes ne sont généralement pas portables. Nginx a personnalisé différents mécanismes de traitement d'E/S pour différents systèmes d'exploitation et utilise généralement l'interface hautes performances du système d'exploitation. C'est la deuxième raison des hautes performances de Nginx
< 2>E/S asynchrones : lorsqu'une demande d'appel de procédure asynchrone est émise, l'appelant ne peut pas obtenir le résultat immédiatement. Une fois le composant qui gère réellement cet appel terminé, il informera l'appelant des opérations d'entrée et de sortie via l'état, les notifications et les rappels.
Pour plus d'articles techniques liés à Nginx, veuillez visiter le Tutoriel d'utilisation de Nginx chronique Allez étudier !
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!