Ngnix utilise une table de hachage pour faciliter le traitement rapide des demandes.
Considérant que la taille de l'unité de stockage de la table de hachage qui enregistre les clés et leurs valeurs ne dépassera pas le paramètre défini (taille du bucket de hachage), Nginx est haché au démarrage et à chaque reconfiguration . Choisissez la taille de tableau la plus petite possible. (Apprentissage recommandé : Nginx utilise )
jusqu'à ce que la taille de la table de hachage dépasse le paramètre (Hash Max SiZe), la taille est resélectionnée. Par exemple, la table de hachage qui contient les noms de serveurs est contrôlée par les directives
server_names_hash_max_size
Copier après la connexion
et
server_names_hash_bucket_size
Copier après la connexion
. La taille du compartiment de hachage du paramètre est toujours égale à la taille de la table de hachage et est un multiple de la taille du cache du processeur. Après avoir réduit le nombre d'accès en mémoire, il est possible d'accélérer la recherche des valeurs clés de la table de hachage dans le processeur.
Si la taille du compartiment de hachage est égale à la taille du cache du processeur, alors lors de la recherche d'une clé, le nombre de recherches dans la mémoire est de 2 dans le pire des cas. La première fois consiste à déterminer l'adresse de l'unité de stockage et la deuxième fois à trouver la valeur clé dans l'unité de stockage.
Par conséquent, si Nginx indique que la taille maximale du hachage ou la taille du compartiment de hachage doit être augmentée, la première chose à faire est d'augmenter la taille du paramètre précédent.
Événement Modèle
Nginx prend en charge les méthodes de traitement de connexion suivantes (méthode de multiplexage d'E/S) , ces méthodes peuvent être spécifiées via la directive
use
Copier après la connexion
.
select - la méthode standard. Il s'agit de la valeur par défaut au moment de la compilation s'il n'existe pas de méthode plus efficace pour la plateforme actuelle. Vous pouvez activer ou désactiver ce module à l'aide des paramètres de configuration
--with-select_module
Copier après la connexion
et
--without-select_module
Copier après la connexion
.
sondage - la méthode standard. Il s'agit de la valeur par défaut au moment de la compilation s'il n'existe pas de méthode plus efficace pour la plateforme actuelle. Vous pouvez activer ou désactiver ce module à l'aide des paramètres de configuration
--with-poll_module
Copier après la connexion
et
--without-poll_module
Copier après la connexion
.
kqueue - Méthode efficace utilisée dans FreeBSD 4.1+, OpenBSD 2.9+, NetBSD 2.0 et MacOS X. L'utilisation de kqueue sur un système MacOS X à double processeur peut provoquer une panique du noyau.
epoll - une méthode efficace, utilisée dans les systèmes du noyau Linux version 2.6 et ultérieures. Dans certaines distributions, comme SuSE 8.2, il existe un correctif pour prendre en charge epoll dans le noyau 2.4.
rtsig - signal exécutable en temps réel, utilisé dans les systèmes avec la version 2.2.19 ou ultérieure du noyau Linux. Par défaut, pas plus de 1 024 signaux POSIX en temps réel (en file d’attente) peuvent apparaître dans l’ensemble du système. Cette situation est inefficace pour les serveurs très chargés ; il est donc nécessaire d'augmenter la taille de la file d'attente en ajustant le paramètre du noyau
/proc/sys/kernel/rtsig-max
Copier après la connexion
. Cependant, à partir de la version 2.6.6-mm2 du noyau Linux, ce paramètre n'est plus utilisé et il existe une file d'attente de signaux indépendante pour chaque processus. La taille de cette file d'attente peut être ajustée avec le paramètre RLIMIT_SIGPENDING. Lorsque cette file d'attente devient trop encombrée, nginx l'abandonne et commence à utiliser la méthode
poll
pour gérer les connexions jusqu'au retour à la normale.
/dev/poll - méthode efficace pour Solaris 7 11/99+, HP/UX 11.22+ (eventport), IRIX 6.5.15+ et Tru64 UNIX 5.1A+.
eventport - Efficace pour Solaris 10. Pour éviter les pannes du noyau, il est nécessaire d'installer ce correctif de sécurité.
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!