NgixProxy_Pathfinder/.gemini/workflows/performance_tuning.md

2.6 KiB

description
Guia passo a passo para otimizar buffers, timeouts e cache no Nginx baseado no tipo de carga de trabalho.

🚀 Workflow: Performance Tuning (Pathfinder Proxy)

Este workflow guia o ajuste fino do Nginx para extrair a máxima performance, garantindo que o tempo de resposta (request_time) e a carga da CPU sejam minimizados.

1. Base Tecnológica (Obrigatório)

Todo site no Pathfinder deve começar com a fundação de compressão e parâmetros base:

# No bloco 'http' ou 'server'
include snippets/compression.conf;     # Gzip + Brotli (Google)
include snippets/proxy_params.conf;    # Real-IP + Headers + Buffers Base

2. Aplicação de Presets por Carga de Trabalho

Preset: APIs e Node.js

O proxy_params.conf já traz timeouts de 60s. Para APIs de tempo real, você deve sobrescrever para timeouts mais agressivos:

location /api/ {
    include snippets/proxy_params.conf;
    
    # Sobrescrita para baixa latência
    proxy_read_timeout 30s;
    proxy_buffering off;

    # Suporte a WebSockets (Necessário para Traccar/Socket.io)
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
}

📂 Preset: Downloads e Assets Estáticos

Otimize usando o motor SWR (Stale-While-Revalidate):

location /static/ {
    include snippets/cache_optimizer.conf; # Ativa SWR + X-Cache-Status
    
    # Performance de Sistema
    sendfile on;
    tcp_nopush on;
    
    # Cache no Browser (1 ano para assets com hash)
    expires 365d;
    add_header Cache-Control "public, no-transform";
}

🎬 Preset: Streaming (Vídeo/Áudio)

Para streaming, precisamos de buffers maiores que o padrão do proxy_params.conf:

location /stream/ {
    include snippets/proxy_params.conf;

    # Suporte a Range Requests (Seek no vídeo)
    proxy_cache_key "$host$request_uri$http_range";
    proxy_set_header Range $http_range;
    proxy_set_header If-Range $http_if_range;

    # Tuning de Buffer Exclusivo
    proxy_buffers 32 16k;
    proxy_buffer_size 64k;
    proxy_read_timeout 600s;
}

3. Caching Inteligente (Pseudo-CDN)

Use o snippet cache_zones.conf para definir onde o cache reside e o cache_proxy_params.conf para comportamento padrão de cache.

4. Verificação de Performance

Utilize o formato de log detailed_proxy (definido em snippets/log_formats.conf) para depurar gargalos:

# Monitorar tempo de resposta do backend em tempo real
tail -f /var/log/nginx/access_json.log | jq '. | {url: .uri, status: .status, upstream_time: .upstream_response_time, cache: .upstream_cache_status}'