Optimización de Rendimiento
Consejos para hacer que FeedbackPulse SaaS funcione más rápido a medida que creces.
Mejoras Rápidas
1. Caché de Configuración
php artisan config:cache # Caché de archivos .env y de configuración
php artisan route:cache # Caché de rutas
php artisan view:cache # Precompilar vistas Blade
Ejecuta estos comandos después de cada despliegue. Limpia con
php artisan optimize:clear.
2. Usar Redis para Caché y Sesiones
Redis es significativamente más rápido que el caché de archivo o de base de datos:
sudo apt install redis-server php8.4-redis
CACHE_STORE=redis
SESSION_DRIVER=redis
QUEUE_CONNECTION=redis
3. Usar Cola de Base de Datos (Mínimo)
QUEUE_CONNECTION=database
Ejecuta un trabajador de cola mediante Supervisor para procesar trabajos en segundo plano en lugar de en línea.
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 ; Deshabilitar en producción
Optimización de Base de Datos
Agregar Índices
FeedbackPulse incluye los índices apropiados, pero si ejecutas consultas grandes, verifica:
-- Comprobar consultas lentas
SET GLOBAL slow_query_log = 'ON';
SET GLOBAL long_query_time = 2;
Ajuste de MySQL
innodb_buffer_pool_size = 1G # 50-70% de la RAM disponible
innodb_log_file_size = 256M
max_connections = 200
innodb_flush_log_at_trx_commit = 2 # Pequeño sacrificio de durabilidad por velocidad
Optimización del 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;
Caché de Archivos Estáticos
location ~* \.(jpg|jpeg|png|gif|ico|css|js|svg|woff|woff2)$ {
expires 30d;
add_header Cache-Control "public, immutable";
}
Ajuste de PHP-FPM
pm = dynamic
pm.max_children = 20 # Ajustar según la RAM
pm.start_servers = 5
pm.min_spare_servers = 3
pm.max_spare_servers = 10
pm.max_requests = 500 # Prevenir fugas de memoria
Recomendaciones de Escalado
| Inquilinos | Configuración Recomendada |
|---|---|
| 1-50 | VPS único, caché de archivo, cola síncrona |
| 50-200 | VPS único, caché Redis, cola de base de datos con Supervisor |
| 200-1.000 | Servidor dedicado, caché Redis + cola, ajuste de MySQL |
| 1.000+ | Balanceador de carga, servidor DB separado, clúster Redis, múltiples trabajadores de cola |
Monitoreo
# Comprobar el estado de PHP-FPM
sudo systemctl status php8.4-fpm
# Comprobar la lista de procesos de MySQL
mysqladmin processlist
# Comprobar el espacio en disco
df -h
# Comprobar el uso de memoria
free -m
# Comprobar los registros de Laravel en busca de errores
tail -f storage/logs/laravel.log