Méthodes d'optimisation des performances Nginx
Optimisation des paramètres du système Linux
Certaines configurations mentionnées ci-dessous nécessitent plus Seulement le nouveau Linux (2.6 ou supérieur) peut le prendre en charge. L'auteur utilise CentOS 7.4, version du noyau 3.10. S'il ne répond pas aux besoins, il est préférable de mettre à niveau en conséquence. Après tout, l'application de correctifs est une tâche ingrate. Pour le réglage au niveau du système, nous modifions généralement simplement la limite du descripteur de fichier, la longueur de la file d'attente du tampon et le nombre de ports temporaires.
Limite du descripteur de fichier
Étant donné que chaque connexion TCP occupe un descripteur de fichier, une fois le descripteur de fichier épuisé, les nouvelles connexions renverront "Trop de" fichiers ouverts", afin de Pour améliorer les performances, nous devons le modifier : 1. Restrictions au niveau du système Editez le fichier /etc/sysctl.conf et ajoutez le contenu suivant :
fs.file-max =10000000 fs.nr_open =10000000
Restrictions au niveau de l'utilisateur Editez le fichier /etc/security /limits.conf et ajoutez le contenu suivant :
* hard nofile 1000000 * soft nofile 1000000
Nous devons nous assurer que la limite de niveau utilisateur est inférieure à la limite de niveau système, sinon cela entraînera l'impossibilité de se connecter via SSH. Une fois la modification terminée, exécutez la commande suivante :
$ sysctl -p
Vous pouvez vérifier si la modification a réussi en exécutant la commande ulimit -a.
Longueur de la file d'attente de connexion TCP
Modifiez le fichier /etc/sysctl.conf et ajoutez le contenu suivant :
# The length of the syn quenenet.ipv4.tcp_max_syn_backlog =65535# The length of the tcp accept queuenet.core.somaxconn =65535
où tcp_max_syn_backlog est utilisé pour spécifier la longueur de la file d'attente SYN semi-connectée. Lorsqu'une nouvelle connexion arrive, le système détectera la file d'attente SYN semi-connectée. Si la file d'attente est pleine, la demande SYN ne peut pas être traitée et les comptes statistiques somaxconn seront augmentés dans ListenOverflows et ListenDrops dans. /proc/net/netstat pour la longueur de file d'attente ACCEPT de connexion complète spécifiée Lorsque la file d'attente est pleine, le paquet ACK envoyé par le client ne sera pas traité correctement et l'erreur « connexion réinitialisée par le homologue » sera renvoyée. journal des erreurs "pas d'amont en direct lors de la connexion aux amonts" Si l'erreur ci-dessus se produit, nous devons envisager d'augmenter la configuration de ces deux éléments.
Port temporaire
Étant donné que Nginx est utilisé comme proxy, chaque connexion TCP au service Web en amont occupera un port temporaire, nous devons donc modifier le paramètre ip_local_port_range pour modifier /etc/ sysctl.conf, ajoutez le contenu suivant :
net.ipv4.ip_local_port_range =102465535 net.ipv4.ip_local_reserved_ports =8080,8081,9000-9010
Parmi eux, le paramètre ip_local_reserved_ports est utilisé pour spécifier le port réservé afin d'éviter que le port de service ne soit occupé et ne puisse démarrer. .
Optimisation des paramètres Nginx
L'optimisation des paramètres Nginx tourne principalement autour du fichier de configuration nginx.conf, qui ne sera pas décrit en détail ci-dessous.
Worker process
Une raison importante des puissantes performances de Nginx est qu'il adopte un modèle d'E/S multi-processus non bloquant, nous devons donc en faire bon usage :
# 🎜🎜#worker_processes Le Nginx par défaut n'a qu'un seul processus maître et un seul processus de travail. Nous devons le modifier. Il peut être défini sur un nombre spécifié ou sur. auto, qui est le système Le nombre de cœurs de processeur. L'augmentation du nombre de travailleurs peut entraîner une concurrence entre les processus pour les ressources CPU, entraînant des changements de contexte inutiles. Nous l'avons donc simplement défini sur le nombre de cœurs de processeur : worker_processes auto
worker_connections Le nombre de connexions simultanées que chaque travailleur peut gérer. la valeur par défaut de 512 n'est pas suffisante, nous l'augmentons de manière appropriée : worker_connections 4096
Nginx prend en charge les méthodes de réutilisation d'E/S suivantes. Gérer les connexions : select, poll, kqueue, epoll, rtsig, /dev/poll, eventport. Différents systèmes d'exploitation utilisent différents outils, et dans les systèmes Linux, epoll est le plus efficace. Pour éviter des établissements et des déconnexions fréquents de Nginx vers les services Web, nous pouvons activer la fonctionnalité de connexion longue KeepAlive prise en charge à partir de HTTP 1.1. Elle peut réduire considérablement la surcharge du processeur et du réseau. Dans notre combat actuel, c’est aussi la plus grande amélioration des performances. Keepalive doit être utilisé avec proxy_http_version et proxy_set_header. La configuration de référence est la suivante :
où keepalive n'est ni le délai d'attente ni le nombre de pools de connexions. L'explication officielle est la suivante : .upstream BACKEND { keepalive 300; server 127.0.0.1:8081; } server { listen 8080; location /{ proxy_pass http://BACKEND; proxy_http_version 1.1; proxy_set_header Connection""; } }
Copier après la connexionLe paramètre connections définit le nombre maximum de connexions keepalive inactives aux serveurs en amont qui sont conservées dans le cache de chaque processus de travail. Lorsque ce nombre est dépassé, les connexions les moins récemment utilisées sont fermées.
如果该值过小,连接池会经常进行回收、分配和再回收操作。为了避免这种情况出现,可以根据实际情况适当调整这个值,在我们实际情况中,目标QPS为6000,Web服务响应时间约为200ms,因此需要约1200个长连接,而 keepalive值取长连接数量的10%~30%就可以了,这里我们取300,如果不想计算,直接设为1000也是可行的。
Access-Log缓存
记录日志的I/O开销比较高,好在Nginx支持日志缓存,我们可以利用这个功能,降低写日志文件的频率,从而提高性能。结合使用buffer和flush两个参数可以控制缓存行为
access_log /var/logs/nginx-access.log buffer=64k gzip flush=1m
其中 buffer制定了缓存大小,当缓冲区达到 buffer所指定的大小时,Nginx就会将缓存起来的日志写到文件中;flush指定了缓存超时时间,当 flush指定的时间到达时,也会触发缓存日志写入文件操作。
文件描述符限制
Nginx配置中同样有相应的配置项:worker_rlimit_nofile, 理论上这个值应该设置为 /etc/security/limits.conf 中的值除以 worker_processes, 但实际中不可能每个进程均匀分配,所以这里只要设置成和 /etc/security/limits.conf 一样就可以了
worker_rlimit_nofile 1000000;
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Comment configurer un nom de domaine NGINX sur un serveur cloud: Créez un enregistrement A pointant vers l'adresse IP publique du serveur cloud. Ajoutez des blocs d'hôtes virtuels dans le fichier de configuration Nginx, en spécifiant le port d'écoute, le nom de domaine et le répertoire racine du site Web. Redémarrez Nginx pour appliquer les modifications. Accéder à la configuration du test de nom de domaine. Autres notes: Installez le certificat SSL pour activer HTTPS, assurez-vous que le pare-feu autorise le trafic Port 80 et attendez que la résolution DNS prenne effet.

Vous pouvez interroger le nom du conteneur Docker en suivant les étapes: répertorier tous les conteneurs (Docker PS). Filtrez la liste des conteneurs (à l'aide de la commande grep). Obtient le nom du conteneur (situé dans la colonne "Noms").

Comment confirmer si Nginx est démarré: 1. Utilisez la ligne de commande: SystemCTl Status Nginx (Linux / Unix), netStat -ano | Findstr 80 (Windows); 2. Vérifiez si le port 80 est ouvert; 3. Vérifiez le message de démarrage NGINX dans le journal système; 4. Utilisez des outils tiers, tels que Nagios, Zabbix et Icinga.

Comment configurer Nginx dans Windows? Installez Nginx et créez une configuration d'hôte virtuelle. Modifiez le fichier de configuration principale et incluez la configuration de l'hôte virtuel. Démarrer ou recharger nginx. Testez la configuration et affichez le site Web. Activer sélectivement SSL et configurer les certificats SSL. Définissez sélectivement le pare-feu pour permettre le trafic Port 80 et 443.

Les méthodes qui peuvent interroger la version Nginx sont: utilisez la commande nginx -v; Afficher la directive de version dans le fichier nginx.conf; Ouvrez la page d'erreur Nginx et affichez le titre de la page.

Le démarrage d'un serveur Nginx nécessite différentes étapes en fonction des différents systèmes d'exploitation: Système Linux / Unix: Installez le package NGINX (par exemple, en utilisant Apt-Get ou Yum). Utilisez SystemCTL pour démarrer un service NGINX (par exemple, sudo systemctl start nginx). Système Windows: téléchargez et installez les fichiers binaires Windows. Démarrer Nginx à l'aide de l'exécutable Nginx.exe (par exemple, nginx.exe -c conf \ nginx.conf). Peu importe le système d'exploitation que vous utilisez, vous pouvez accéder au serveur IP

Étapes de démarrage du conteneur Docker: Tirez l'image du conteneur: Exécutez "Docker Pull [Mirror Name]". Créer un conteneur: utilisez "Docker Create [Options] [Mirror Name] [Commandes et paramètres]". Démarrez le conteneur: exécutez "docker start [nom de conteneur ou id]". Vérifiez l'état du conteneur: vérifiez que le conteneur s'exécute avec "Docker PS".

Créer un conteneur dans Docker: 1. Tirez l'image: docker pull [Nom du miroir] 2. Créer un conteneur: docker run [Options] [Nom du miroir] [Commande] 3. Démarrez le conteneur: docker start [Nom du conteneur]
