NgixProxy_Pathfinder/.gemini/workflows/performance_tuning.md

79 lines
2.6 KiB
Markdown

---
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:
```nginx
# 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:
```nginx
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):
```nginx
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`:
```nginx
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:
```bash
# 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}'
```