Maison >Opération et maintenance >Nginx >Discussion approfondie sur le mécanisme de mise en cache de Nginx et les techniques de réglage des performances

Discussion approfondie sur le mécanisme de mise en cache de Nginx et les techniques de réglage des performances

王林
王林original
2023-08-26 21:46:45974parcourir

Discussion approfondie sur le mécanisme de mise en cache de Nginx et les techniques de réglage des performances

Discussion approfondie sur le mécanisme de mise en cache de Nginx et les techniques de réglage des performances

Introduction :
Dans le développement Web d'aujourd'hui, les hautes performances et la haute concurrence sont les objectifs que nous poursuivons. En tant que serveur Web hautes performances, le mécanisme de mise en cache et les compétences en matière d'optimisation des performances de Nginx sont essentiels pour améliorer la capacité de charge du site Web. Cet article approfondira le mécanisme de mise en cache et les techniques de réglage des performances de Nginx, et donnera des exemples de code pertinents.

1. Le mécanisme de mise en cache de Nginx
Le mécanisme de mise en cache de Nginx est implémenté via le module de cache proxy. Il peut mettre en cache les données proxy localement, et lorsque la même demande arrivera la prochaine fois, les données seront lues directement à partir du cache sans qu'il soit nécessaire d'envoyer une demande au serveur principal. Cela peut réduire considérablement la pression sur le serveur back-end et améliorer la vitesse de réponse du site Web.

  1. Activer la mise en cache
    Pour activer la fonction de mise en cache de Nginx, vous devez d'abord ajouter le code suivant au fichier de configuration de Nginx :

    http {
     ...
     proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=my_cache:10m max_size=10g inactive=60m use_temp_path=off;
     proxy_temp_path /data/nginx/tmp;
     ...
    }

    Dans ce code, proxy_cache_path définit le chemin du cache et certains paramètres associés. . Parmi eux, le paramètre levels représente le niveau de répertoire créé dans le chemin du cache, le paramètre keys_zone définit une zone de mémoire partagée utilisée pour stocker les index mis en cache et les métadonnées associées, max_size définit la taille maximale du cache. Le paramètre inactive indique qu'un cache qui n'a pas été accédé pendant une certaine période de temps sera considéré comme expiré. Le paramètre spécifie si Placer les fichiers de cache dans un chemin temporaire. proxy_cache_path定义了缓存的路径和一些相关的参数。其中,levels参数表示在缓存路径中创建的目录层级,keys_zone参数定义了一个共享内存区域,用于存储缓存的索引和相关元数据,max_size参数定义了缓存的最大大小,inactive参数表示超过一定时间没有被访问的缓存将被认为是过期的,use_temp_path参数指定是否将缓存文件放在临时路径中。

  2. 配置缓存规则
    要指定哪些请求需要被缓存,可以在Nginx的配置文件中添加以下代码:

    http {
     ...
     location / {
         proxy_pass http://backend;
         proxy_cache my_cache;
         proxy_cache_valid 200 304 1h;
     }
     ...
    }

    在这段代码中,proxy_pass指令定义了要代理到的后端服务器地址,proxy_cache指定了使用的缓存区域,proxy_cache_valid定义了HTTP状态码200和304被缓存的时间。

  3. 刷新和清理缓存
    为了保证数据的实时性和准确性,我们有时需要手动刷新或清理缓存。可以在Nginx的配置文件中添加以下代码:

    http {
     ...
     location /flush_cache {
         internal;
         proxy_cache_purge my_cache "$scheme$request_method$host$request_uri";
         return 200 "Cache flushed successfully";
     }
     ...
    }

    在这段代码中,location指定了刷新缓存的URL,internal指令限制了该请求只能被Nginx内部调用,proxy_cache_purge指令用于清理缓存。

二、Nginx的性能调优技巧
除了缓存机制之外,我们还可以通过一些性能调优的技巧来进一步提升Nginx的性能。

  1. 提高Worker进程的并发连接数
    Nginx默认配置的Worker进程数较少,可以通过修改配置文件来提高Worker进程的数量,从而提高并发连接数:

    worker_processes auto;
    events {
     worker_connections 4096;
    }

    在这段代码中,worker_processes指定了Worker进程的数量,events部分则指定了每个Worker进程的最大并发连接数。

  2. 配置TCP连接和超时参数
    合理配置TCP连接和超时参数可以提高Nginx的性能:

    http {
     ...
     keepalive_timeout 65;
     keepalive_requests 100;
     send_timeout 2m;
     client_header_timeout 1m;
     ...
    }

    在这段代码中,keepalive_timeout定义了一个客户端连接在没有任何请求的情况下保持活跃的最大时间,keepalive_requests定义了一个客户端连接请求的最大次数,send_timeout定义了向客户端发送响应的最长时间,client_header_timeout定义了接收客户端请求头的最长时间。

  3. 启用Gzip压缩
    启用Gzip压缩可以减小传输的数据量,提高页面加载速度:

    http {
     ...
     gzip on;
     gzip_disable "msie6";
     gzip_types text/plain text/css application/json;
     ...
    }

    在这段代码中,gzip指令启用了Gzip压缩,gzip_disable指定了不压缩msie6浏览器的请求,gzip_types

Configurer les règles de mise en cache

Pour spécifier quelles requêtes doivent être mises en cache, vous pouvez ajouter le code suivant au fichier de configuration Nginx :
rrreee

Dans ce code, la directive proxy_pass définit le proxy à L'adresse du serveur backend, proxy_cache spécifie la zone de cache utilisée et proxy_cache_valid définit l'heure à laquelle les codes d'état HTTP 200 et 304 sont mis en cache. 🎜🎜🎜🎜Actualiser et vider le cache🎜Afin de garantir le temps réel et l'exactitude des données, nous devons parfois actualiser ou vider manuellement le cache. Vous pouvez ajouter le code suivant au fichier de configuration Nginx : 🎜rrreee🎜Dans ce code, location spécifie l'URL pour actualiser le cache, et la directive internal limite la requête à Appelée en interne par Nginx, la directive proxy_cache_purge est utilisée pour nettoyer le cache. 🎜🎜🎜🎜2. Techniques de réglage des performances de Nginx🎜En plus du mécanisme de mise en cache, nous pouvons également utiliser certaines techniques de réglage des performances pour améliorer encore les performances de Nginx. 🎜🎜🎜🎜Augmentez le nombre de connexions simultanées du processus Worker🎜Nginx a un plus petit nombre de processus Worker configurés par défaut Vous pouvez augmenter le nombre de processus Worker en modifiant le fichier de configuration pour augmenter le nombre de connexions simultanées : 🎜rrreee. 🎜Dans ce code, worker_processes spécifie le nombre de processus Worker et la section events spécifie le nombre maximum de connexions simultanées pour chaque processus Worker. 🎜🎜🎜🎜Configurer les paramètres de connexion TCP et de délai d'attente 🎜 Configurer correctement les paramètres de connexion TCP et de délai d'attente peut améliorer les performances de Nginx : 🎜rrreee🎜 Dans ce code, keepalive_timeout définit une connexion client sans aucun délai maximum pour rester actif dans le cas d'une requête, keepalive_requests définit le nombre maximum de requêtes de connexion client, send_timeout définit le temps maximum pour envoyer une réponse au client, client_header_timeout définit le délai maximum de réception des en-têtes de requête client. 🎜🎜🎜🎜Activer la compression Gzip🎜L'activation de la compression Gzip peut réduire la quantité de données transférées et améliorer la vitesse de chargement des pages : 🎜rrreee🎜Dans ce code, la directive gzip active la compression Gzip, gzip_disable spécifie que la requête du navigateur <code>msie6 n'est pas compressée, et gzip_types spécifie le type MIME qui nécessite la compression Gzip. 🎜🎜🎜🎜Conclusion : 🎜En explorant en profondeur le mécanisme de mise en cache et les techniques de réglage des performances de Nginx, nous pouvons mieux comprendre et appliquer Nginx, et améliorer efficacement la capacité de chargement et l'expérience utilisateur du site Web. En configurant correctement le mécanisme de mise en cache et les paramètres de performances, et en les ajustant en fonction de la situation réelle, nous pouvons obtenir de meilleurs résultats en matière de développement Web hautes performances et à haute concurrence. J'espère que cet article pourra être utile aux lecteurs. 🎜

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn