Otimização de Desempenho
Dicas para tornar o FeedbackPulse SaaS mais rápido à medida que você escala.
Ganhos Rápidos
1. Cache de Configuração
php artisan config:cache # Fazer cache do .env e arquivos de configuração
php artisan route:cache # Fazer cache das rotas
php artisan view:cache # Pré-compilar views Blade
Execute após cada implantação. Limpe com
php artisan optimize:clear.
2. Usar Redis para Cache & Sessões
O Redis é significativamente mais rápido que o cache em arquivo ou banco de dados:
sudo apt install redis-server php8.4-redis
CACHE_STORE=redis
SESSION_DRIVER=redis
QUEUE_CONNECTION=redis
3. Usar Fila de Banco de Dados (Mínimo)
QUEUE_CONNECTION=database
Execute um worker de fila via Supervisor para processar jobs em segundo plano em vez de inline.
4. Habilitar OPcache
; /etc/php/8.4/fpm/conf.d/10-opcache.ini
opcache.enable=1
opcache.memory_consumption=256
opcache.max_accelerated_files=20000
opcache.validate_timestamps=0 ; Desabilitar em produção
Otimização do Banco de Dados
Adicionar Índices
O FeedbackPulse vem com índices adequados, mas se você estiver executando consultas grandes, verifique:
-- Verificar consultas lentas
SET GLOBAL slow_query_log = 'ON';
SET GLOBAL long_query_time = 2;
Ajuste do MySQL
innodb_buffer_pool_size = 1G # 50-70% da RAM disponível
innodb_log_file_size = 256M
max_connections = 200
innodb_flush_log_at_trx_commit = 2 # Pequena troca de durabilidade por velocidade
Otimização do Servidor Web
Nginx: Habilitar Gzip
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml;
gzip_min_length 256;
gzip_vary on;
Cache de Arquivos Estáticos
location ~* \.(jpg|jpeg|png|gif|ico|css|js|svg|woff|woff2)$ {
expires 30d;
add_header Cache-Control "public, immutable";
}
Ajuste do PHP-FPM
pm = dynamic
pm.max_children = 20 # Ajuste com base na RAM
pm.start_servers = 5
pm.min_spare_servers = 3
pm.max_spare_servers = 10
pm.max_requests = 500 # Prevenir vazamentos de memória
Recomendações de Escalabilidade
| Tenants | Configuração Recomendada |
|---|---|
| 1-50 | VPS único, cache em arquivo, fila síncrona |
| 50-200 | VPS único, cache Redis, fila de banco de dados com Supervisor |
| 200-1.000 | Servidor dedicado, cache+fila Redis, ajuste MySQL |
| 1.000+ | Load balancer, servidor DB separado, cluster Redis, múltiplos workers de fila |
Monitoramento
# Verificar status do PHP-FPM
sudo systemctl status php8.4-fpm
# Verificar lista de processos do MySQL
mysqladmin processlist
# Verificar espaço em disco
df -h
# Verificar uso de memória
free -m
# Verificar logs do Laravel para erros
tail -f storage/logs/laravel.log