GNU/Linux >> Tutoriels Linux >  >> Linux

Réglage des performances Nginx

Nginx est un serveur Web open source gratuit à hautes performances et à faible poids, utilisé comme équilibreur de charge, proxy inverse, cache HTTP et proxy de messagerie. Bien que Nginx soit assez nouveau par rapport aux autres serveurs Web, sa popularité augmente en raison de ses hautes performances. Avec la configuration par défaut de Nginx, vous pouvez obtenir des performances rapides, mais nous pouvons encore augmenter les performances de Nginx en modifiant certaines configurations.

Dans cet article, vous apprendrez 8 façons différentes d'améliorer les performances de Nginx. Pour illustrer l'exemple de cet article, j'ai installé Nginx sur le système Ubuntu 22.04 LTS.

Modifier les processus de travail

Toutes les demandes de serveur Web dans Nginx sont gérées par un processus de travail. Dans Nginx, les processus de travail sont créés en tant que plusieurs processus de travail pour gérer la demande et un processus maître est responsable de la gestion de tous les processus de travail et de l'analyse de la configuration. Dans la configuration par défaut de Nginx, le paramètre de processus de travail est défini sur auto, ce qui démarre le processus de travail en fonction du cœur de processeur disponible. Comme recommandé dans les documents officiels de Nginx, c'est le meilleur moyen de conserver le processus de travail en fonction du cœur de processeur disponible, donc auto est le paramètre recommandé. Si vous souhaitez connaître le nombre de cœurs de vos processeurs, exécutez simplement la commande suivante.

$ grep processor /proc/cpuinfo | wc -l

Vous pouvez modifier la valeur par défaut du processus de travail à partir du fichier de configuration Nginx qui se trouve dans /etc/nginx/nginx.conf. Si votre serveur connaît un trafic plus élevé et que vous devez ajouter plus de processus de travail, il est préférable de mettre à niveau le serveur vers plus de processeurs principaux.

Améliorer la limite des connexions des travailleurs

La connexion de travail est le nombre total de connexions simultanées que chaque processus de travail disponible peut gérer. Par défaut, le processus de travail peut gérer 512 connexions à la fois. Avant de modifier la valeur de connexion du travailleur, vous devez vérifier le système de connexion max pour autoriser l'utilisation de la commande suivante pour mettre à jour la configuration de connexion en fonction de celle-ci.

$ ulimit -n

Pour optimiser le potentiel de Nginx, définissez la valeur de connexion du travailleur sur le système de connexion maximal autorisé par le système dans le fichier nginx.conf.

Mise en œuvre de la compression de contenu

Pour la compression de contenu Web, Nginx utilise gzip pour augmenter le délai de livraison du contenu et réduire les utilisations de la bande passante du réseau. Dans la configuration, vous pouvez trouver la configuration gzip à l'état commenté mais vous pouvez décommenter et modifier le gzip en fonction de vos besoins. Comme le processus de compression gzip utilise les ressources système, si vous disposez de ressources limitées, modifiez la configuration en conséquence, par exemple en compressant uniquement un type de fichier spécifique, un niveau de compression, etc.

Mise en cache du contenu statique

Dans ce développement Web moderne, la plupart des contenus sont servis de manière statique au navigateur ou au client, de sorte que la mise en cache des fichiers statiques chargera le contenu plus rapidement. Cela réduira également la demande de connexion au Nginx lorsque le contenu est chargé à partir du cache. Pour démarrer le processus de mise en cache, ajoutez la directive suivante à votre fichier de configuration d'hôte virtuel Nginx.

location ~* .(jpg|jpeg|png|gif|ico|css|js)$ {expires 30d;}

La directive ci-dessus met en cache le fichier de ressources pendant 30 jours. Vous pouvez définir la date d'expiration du cache en fonction de vos besoins.

Mise en mémoire tampon

La mise en mémoire tampon peut rendre la communication entre le client et le serveur plus efficace car elle conserve une partie de la réponse jusqu'à ce que la mémoire tampon se remplisse. Si la réponse est trop élevée par rapport à la taille réelle du tampon, Nginx écrira alors la réponse sur le disque, ce qui peut entraîner un problème de performances. Vous pouvez mettre à jour la directive suivante pour ajuster la taille du tampon en fonction de vos besoins.

Client_body_buffer_size  :Il détermine la taille réelle de la mémoire tampon utilisée pour contenir les données de réponse du client.

Client_header_buffer_size :Il gère la taille de l'en-tête du client. Normalement, régler la valeur sur 1k est suffisant.

Client_max_body_size :Il limite la réponse maximale du corps autorisée au client. Si la taille du corps dépasse sa valeur, Nginx lancera l'erreur avec "Request Entity Too Large".

Pour ajuster la taille de la mémoire tampon, ajoutez la directive suivante dans la section http.

http {
…
client_body_buffer_size 80k;
client_max_body_size 9m;
client_header_buffer_size 1k;
...
}

Mise en mémoire tampon du journal d'accès

La journalisation est l'un des rôles essentiels dans le débogage du problème et l'audit. Comme la journalisation stocke toutes les données de requête qui affectent à la fois les cycles d'E/S et le processeur, ce qui entraîne des problèmes de performances. Vous pouvez réduire ce type d'impact en activant la mise en mémoire tampon dans le journal. Une fois que la taille du tampon atteint sa limite, Nginx écrit le contenu du tampon dans le journal. Vous pouvez activer la mise en mémoire tampon en ajoutant des paramètres de mémoire tampon avec des valeurs de taille à la directive de journal d'accès.

access_log /var/log/nginx/access.log main buffer=16k;

Ou vous pouvez désactiver le journal d'accès (s'il n'est pas nécessaire) de la manière suivante.

access_log off;

Limitation des valeurs de délai d'attente

Limiter la valeur du délai d'attente améliorera les performances de Nginx. Nginx attendra la demande de corps et d'en-tête du client pendant la période donnée. S'ils ne reçoivent pas les données de réponse à temps, Nginx déclenche un délai d'attente pour le client respectif. La valeur du délai d'attente peut être gérée par la directive suivante. Pour définir la durée du délai d'attente, copiez-collez la directive donnée ci-dessous dans la section http.

client_body_timeout 10;
client_header_timeout 10;
keepalive_timeout 13;
send_timeout 10;

Le délai d'expiration du corps et de l'en-tête du client est une période de temps Nginx pour lire l'en-tête et le corps de la demande du client. Si elle n'est pas terminée à temps, la demande est terminée avec une erreur de délai d'attente. Keepalive_timeout est la durée après que nginx a fermé la connexion client keep-alive reste ouverte. Send_timeout est la durée pendant laquelle le client doit recevoir la réponse envoyée par Nginx.

Ouvrir le cache de fichiers

Sous Linux, presque tout est un fichier, lorsque open_file_cache est utilisé, le descripteur de fichier et tous les fichiers fréquemment consultés sont mis en cache sur le serveur. Surtout lorsque le service des fichiers HTML statiques à l'aide du cache de fichiers ouvert améliorera les performances de Nginx car il ouvre et stocke le cache en mémoire pendant un intervalle donné. Mettez la directive suivante de open_file_cache dans la section http pour lancer la mise en cache.

http {
...
open_file_cache max=1024 inactive=10s;
open_file_cache_valid 60s;
open_file_cache_min_uses 2;
open_file_cache_errors on;

Conclusion

Ce sont huit façons d'augmenter les performances d'un serveur Web Nginx par une simple modification du fichier de configuration Nginx. J'espère que la lecture de cet article vous aidera à améliorer votre configuration Ngunx pour obtenir les meilleures performances possibles sur votre serveur, serveur ou système cloud.


Linux
  1. MySQL - Réglage et optimisation des performances

  2. nginx - 413 Entité de requête trop grande

  3. Dépannage de base de Nginx

  4. Installer Nginx sur Fedora

  5. Installer Nginx sur Ubuntu

Installez Nginx Amplify sur CentOS 8/RHEL 8 pour surveiller les performances LEMP

Comment obtenir les meilleures performances du serveur Nginx

Comment réparer les connexions de travail ne sont pas assez d'erreur sur Nginx

Comment régler NGINX pour le prochain 2022 ?

Installer Nginx sur Ubuntu 18.04

Présentation de la surveillance et du réglage des performances Linux