>운영 및 유지보수 >엔진스 >Nginx의 캐싱 메커니즘과 성능 튜닝 기술에 대한 심층 토론

Nginx의 캐싱 메커니즘과 성능 튜닝 기술에 대한 심층 토론

王林
王林원래의
2023-08-26 21:46:45974검색

Nginx의 캐싱 메커니즘과 성능 튜닝 기술에 대한 심층 토론

Nginx의 캐싱 메커니즘과 성능 튜닝 기술을 자세히 살펴보세요

소개:
오늘날 웹 개발에서 고성능과 높은 동시성은 우리가 추구하는 목표입니다. 고성능 웹 서버인 Nginx의 캐싱 메커니즘과 성능 튜닝 기술은 웹 사이트의 로드 용량을 향상시키는 데 매우 중요합니다. 이 기사에서는 Nginx의 캐싱 메커니즘과 성능 조정 기술을 자세히 살펴보고 관련 코드 예제를 제공합니다.

1. Nginx의 캐싱 메커니즘
Nginx의 캐싱 메커니즘은 프록시 캐시 모듈을 통해 구현됩니다. 다음에 동일한 요청이 오면 백엔드 서버에 요청을 보낼 필요 없이 캐시에서 직접 데이터를 읽을 수 있도록 프록시된 데이터를 로컬로 캐시할 수 있습니다. 이를 통해 백엔드 서버에 대한 부담을 크게 줄이고 웹사이트의 응답 속도를 향상시킬 수 있습니다.

  1. 캐싱 활성화
    Nginx의 캐싱 기능을 활성화하려면 먼저 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;
     ...
    }

    이 코드에서 proxy_cache_path는 캐시 경로 및 일부 관련 매개변수를 정의합니다. . 그 중 levels 매개변수는 캐시 경로에 생성된 디렉터리 수준을 나타내며, keys_zone 매개변수는 캐시된 인덱스 및 관련 메타데이터를 저장하는 데 사용되는 공유 메모리 영역을 정의합니다. >max_size 매개변수는 캐시의 최대 크기를 정의합니다. inactive 매개변수는 특정 기간 동안 액세스되지 않은 캐시가 만료된 것으로 간주됨을 나타냅니다. 매개변수는 캐시 파일을 임시 경로에 배치할지 여부를 지정합니다. 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

캐싱 규칙 구성

캐싱해야 할 요청을 지정하려면 Nginx 구성 파일에 다음 코드를 추가하면 됩니다.
rrreee

이 코드에서 proxy_pass 지시어는 프록시를 정의합니다. 백엔드 서버 주소 proxy_cache는 사용되는 캐시 영역을 지정하고, proxy_cache_valid는 HTTP 상태 코드 200 및 304가 캐시되는 시간을 정의합니다. 🎜🎜🎜🎜캐시 새로 고침 및 지우기🎜데이터의 실시간 및 정확성을 보장하기 위해 때때로 캐시를 수동으로 새로 고치거나 지워야 할 때가 있습니다. Nginx 구성 파일에 다음 코드를 추가할 수 있습니다. 🎜rrreee🎜이 코드에서 location은 캐시를 새로 고치는 URL을 지정하고 internal 지시문은 요청을 다음으로 제한합니다. Nginx에서 내부적으로 호출되는 proxy_cache_purge 지시문은 캐시를 정리하는 데 사용됩니다. 🎜🎜🎜🎜2. Nginx 성능 조정 기술🎜 캐싱 메커니즘 외에도 일부 성능 조정 기술을 사용하여 Nginx의 성능을 더욱 향상시킬 수도 있습니다. 🎜🎜🎜🎜작업자 프로세스의 동시 연결 수 늘리기🎜Nginx에는 기본적으로 더 적은 수의 작업자 프로세스가 구성되어 있습니다. 구성 파일을 수정하여 동시 연결 수를 늘리면 작업자 프로세스 수를 늘릴 수 있습니다. 🎜rrreee 🎜이 코드에서 worker_processes는 작업자 프로세스 수를 지정하고 events 섹션은 각 작업자 프로세스에 대한 최대 동시 연결 수를 지정합니다. 🎜🎜🎜🎜TCP 연결 및 시간 초과 매개변수 구성 🎜 TCP 연결 및 시간 초과 매개변수를 올바르게 구성하면 Nginx의 성능이 향상될 수 있습니다. 🎜rrreee🎜 이 코드에서 keepalive_timeout은 클라이언트 연결을 정의합니다. 요청 시 활성 상태를 유지합니다. keepalive_requests는 클라이언트에 대한 최대 연결 요청 수를 정의하고, send_timeout은 클라이언트에 응답을 보내는 최대 시간을 정의합니다. client_header_timeout은 클라이언트 요청 헤더를 수신하는 최대 시간을 정의합니다. 🎜🎜🎜🎜Gzip 압축 활성화🎜Gzip 압축을 활성화하면 전송되는 데이터의 양을 줄이고 페이지 로딩 속도를 향상시킬 수 있습니다. 🎜rrreee🎜이 코드에서 gzip 지시문은 Gzip 압축, gzip_disable는 <code>msie6 브라우저의 요청이 압축되지 않음을 지정하고, gzip_types는 Gzip 압축이 필요한 MIME 유형을 지정합니다. 🎜🎜🎜🎜결론: 🎜Nginx의 캐싱 메커니즘과 성능 튜닝 기술을 깊이 탐구함으로써 Nginx를 더 잘 이해하고 적용할 수 있으며 웹 사이트의 로드 용량과 사용자 경험을 효과적으로 향상시킬 수 있습니다. 캐싱 메커니즘과 성능 매개 변수를 올바르게 구성하고 실제 조건에 따라 조정하면 고성능 및 동시성 웹 개발에서 더 나은 결과를 얻을 수 있습니다. 이 글이 독자들에게 도움이 되기를 바랍니다. 🎜

위 내용은 Nginx의 캐싱 메커니즘과 성능 튜닝 기술에 대한 심층 토론의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.