Tu VPS va cada vez más lento. Los usuarios se quejan. ¿Es momento de escalar? ¿O hay algo que puedes optimizar primero?
Esta guía te enseña a identificar cuándo realmente necesitas más recursos y cómo escalar de forma eficiente.
Señales de que necesitas escalar
Métricas críticas
| Métrica | Umbral de alerta | Umbral crítico |
|---|---|---|
| CPU | > 70% sostenido | > 90% sostenido |
| RAM | > 80% usada | > 95% usada |
| Disco | > 80% lleno | > 90% lleno |
| Load Average | > nº cores | > 2x nº cores |
| Tiempo respuesta | > 500ms | > 2s |
Verificar estado actual
# Vista rápida
htop
# CPU y Load
uptime
# load average: 1.50, 1.30, 1.20
# Si tienes 2 cores y load > 2 = problema
# Memoria
free -h
# Mira "available", no "free"
# Disco
df -h
# Tiempo de respuesta web
curl -o /dev/null -s -w "Tiempo: %{time_total}s\n" https://tudominio.com
Señales claras de que debes escalar
| Señal | Significa |
|---|---|
| OOM Killer matando procesos | RAM insuficiente |
| Load average > 2x cores constantemente | CPU insuficiente |
| Disco al 90%+ | Almacenamiento insuficiente |
| Errores 502/503 frecuentes | Recursos agotados |
| Tiempo de respuesta > 2s | Necesitas optimizar o escalar |
Antes de escalar: ¿Has optimizado?
Checklist de optimización
☐ Caché de aplicación habilitado (Redis, Memcached)
☐ Caché de página (Varnish, Nginx FastCGI)
☐ Base de datos optimizada (índices, queries)
☐ Imágenes optimizadas y en CDN
☐ Compresión gzip/brotli activa
☐ Procesos innecesarios desactivados
☐ Logs rotados y limitados
☐ Código optimizado
Optimizaciones que equivalen a escalar
| Optimización | Equivale a |
|---|---|
| Añadir Redis | +30-50% menos carga BD |
| CDN para estáticos | -50% ancho de banda |
| Caché de página | -80% carga de servidor |
| Optimizar queries | +50% capacidad BD |
| PHP OPcache | +30% rendimiento PHP |
Regla: Optimiza primero. Escala cuando las optimizaciones no son suficientes.
Tipos de escalado
Escalado vertical (Scale Up)
Añadir más recursos al mismo servidor:
VPS 2GB RAM, 2 cores
↓
VPS 4GB RAM, 4 cores
↓
VPS 8GB RAM, 6 cores
Ventajas:
- Simple, no requiere cambios de arquitectura
- Sin downtime en muchos proveedores
- Mismo IP, misma configuración
Desventajas:
- Tiene límites (no puedes escalar infinitamente)
- Punto único de fallo
- Puede ser caro en niveles altos
Escalado horizontal (Scale Out)
Añadir más servidores:
┌─────────────────┐
│ Load Balancer │
└────────┬────────┘
│
┌────────────┼────────────┐
│ │ │
┌───▼───┐ ┌────▼───┐ ┌────▼───┐
│ VPS 1 │ │ VPS 2 │ │ VPS 3 │
│ (App) │ │ (App) │ │ (App) │
└───────┘ └────────┘ └────────┘
Ventajas:
- Escalabilidad casi ilimitada
- Alta disponibilidad (si uno cae, otros siguen)
- Mejor para picos de tráfico
Desventajas:
- Más complejo de configurar
- Requiere cambios de arquitectura
- Gestión de sesiones, BD compartida
¿Cuál elegir?
| Situación | Recomendación |
|---|---|
| Web pequeña/mediana creciendo | Vertical |
| Picos de tráfico predecibles | Vertical + CDN |
| SaaS con muchos usuarios | Horizontal |
| Alta disponibilidad crítica | Horizontal |
| Presupuesto limitado | Vertical |
| Primer escalado | Siempre vertical |
Escalado vertical: Guía paso a paso
1. Identificar qué recurso escalar
# ¿CPU?
uptime
mpstat 1 5
# ¿RAM?
free -h
vmstat 1 5
# ¿Disco?
df -h
iostat -x 1 5
# ¿Red?
iftop
2. Elegir el nuevo plan
| Recurso saturado | Qué aumentar |
|---|---|
| CPU alto, RAM OK | Más cores |
| RAM alta, CPU OK | Más RAM |
| Ambos altos | Plan superior completo |
| Disco lleno | Más almacenamiento |
| I/O lento | Disco NVMe si no tienes |
3. Proceso de upgrade
En Avantys/Plesk:
- Panel → VPS → Cambiar plan
- Seleccionar nuevo plan
- Confirmar (puede requerir reinicio)
Proceso general:
- Hacer backup completo antes
- Solicitar upgrade en panel
- Esperar migración (minutos a horas)
- Verificar que todo funciona
4. Verificar después del upgrade
# Verificar nuevos recursos
free -h
nproc
df -h
# Verificar servicios
systemctl status nginx php8.2-fpm mysql
# Test de carga
ab -n 1000 -c 50 https://tudominio.com/
Escalado horizontal: Arquitectura básica
Separar componentes
Antes (todo en un VPS):
┌─────────────────────────┐
│ Nginx + PHP + MySQL │
│ + Redis + Files │
└─────────────────────────┘
Después (separado):
┌──────────┐ ┌──────────┐ ┌──────────┐
│ VPS 1 │ │ VPS 2 │ │ VPS 3 │
│ Web/App │ │ MySQL │ │ Redis │
└──────────┘ └──────────┘ └──────────┘
Load Balancer con Nginx
# /etc/nginx/nginx.conf
upstream backend {
least_conn; # Envía al servidor con menos conexiones
server 10.0.0.1:80 weight=3;
server 10.0.0.2:80 weight=2;
server 10.0.0.3:80 weight=1;
}
server {
listen 80;
server_name tudominio.com;
location / {
proxy_pass http://backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
Sesiones compartidas con Redis
// PHP - Usar Redis para sesiones
ini_set('session.save_handler', 'redis');
ini_set('session.save_path', 'tcp://redis-server:6379');
// Node.js - Usar Redis para sesiones
const session = require('express-session');
const RedisStore = require('connect-redis').default;
const redis = require('redis');
const redisClient = redis.createClient({ host: 'redis-server' });
app.use(session({
store: new RedisStore({ client: redisClient }),
secret: 'tu-secreto',
resave: false,
saveUninitialized: false
}));
Base de datos centralizada
# En los servidores de aplicación, conectar a BD remota
# wp-config.php
define('DB_HOST', '10.0.0.2'); # IP del servidor de BD
# O en .env
DATABASE_URL=mysql://user:[email protected]:3306/database
Cuándo escalar cada recurso
CPU
Escalar cuando:
- Load average > nº cores sostenido
- Procesos tardan en ejecutar
- Compilaciones/builds lentos
Alternativas antes de escalar:
- Optimizar código
- Caché de resultados
- Reducir workers PHP/Node
RAM
Escalar cuando:
- OOM Killer mata procesos
- Swap muy usado (> 50%)
available< 20% del total
Alternativas:
- Limitar memoria por servicio
- Reducir buffers de MySQL
- Menos workers de PHP-FPM
Disco
Escalar cuando:
-
80% usado
- I/O wait alto
- Queries de BD lentas por I/O
Alternativas:
- Limpiar logs y caché
- Mover archivos a CDN/S3
- Archivar datos antiguos
Ancho de banda
Escalar cuando:
- Transferencia limitada alcanzada
- Velocidad de descarga lenta
- Muchos usuarios simultáneos
Alternativas:
- CDN para estáticos (casi siempre la mejor opción)
- Compresión de assets
- Lazy loading de imágenes
Escalado automático (Auto-scaling)
Cuándo considerarlo
- Tráfico muy variable
- Picos predecibles (Black Friday, lanzamientos)
- SaaS con crecimiento rápido
Opciones
Cloud providers con auto-scaling:
- AWS Auto Scaling Groups
- Google Cloud Managed Instance Groups
- DigitalOcean con Kubernetes
Para VPS tradicional:
- Scripts que monitorean y alertan
- Escalado manual pero rápido
Script de alerta para escalar
#!/bin/bash
# /root/scripts/check-scale.sh
THRESHOLD_CPU=80
THRESHOLD_RAM=85
ALERT_EMAIL="[email protected]"
# CPU
CPU_USAGE=$(top -bn1 | grep "Cpu(s)" | awk '{print $2}' | cut -d. -f1)
# RAM
RAM_USAGE=$(free | grep Mem | awk '{printf "%.0f", $3/$2 * 100}')
# Alertas
if [ $CPU_USAGE -gt $THRESHOLD_CPU ]; then
echo "CPU al ${CPU_USAGE}%. Considerar escalar." | \
mail -s "ALERTA: CPU alto en VPS" $ALERT_EMAIL
fi
if [ $RAM_USAGE -gt $THRESHOLD_RAM ]; then
echo "RAM al ${RAM_USAGE}%. Considerar escalar." | \
mail -s "ALERTA: RAM alta en VPS" $ALERT_EMAIL
fi
# Cron cada 5 minutos
*/5 * * * * /root/scripts/check-scale.sh
Costes de escalado
Comparativa típica
| Plan | RAM | CPU | Precio aprox. |
|---|---|---|---|
| Básico | 2 GB | 1 core | €5-10/mes |
| Medio | 4 GB | 2 cores | €15-25/mes |
| Avanzado | 8 GB | 4 cores | €40-60/mes |
| Pro | 16 GB | 6 cores | €80-120/mes |
Optimizar antes de pagar más
| Inversión | Coste | Beneficio |
|---|---|---|
| Cloudflare (gratis) | €0 | -50% tráfico |
| Redis (mismo VPS) | €0 | -40% carga BD |
| Optimizar código | Tiempo | Variable |
| CDN de pago | €5-20/mes | -70% ancho banda |
Preguntas frecuentes
¿Hay downtime al escalar verticalmente?
Depende del proveedor. Algunos permiten escalar sin reinicio (hot upgrade). Otros requieren reinicio de minutos. Siempre verifica con tu proveedor antes.
¿Puedo reducir recursos después de escalar?
Generalmente sí (downgrade), pero puede ser más complicado que escalar. Algunos proveedores no lo permiten sin reinstalar. Verifica la política antes.
¿Cuánto debería escalar de una vez?
Regla general: duplica el recurso que está saturado. Si tienes 2GB RAM y está al 90%, sube a 4GB. Mejor escalar de más que quedarte corto.
¿El escalado horizontal es siempre mejor?
No. Es más complejo y costoso de gestionar. Para la mayoría de webs, escalar verticalmente es suficiente y más simple. Horizontal es para casos específicos.
¿Cómo sé si el problema es el VPS o mi código?
Si los recursos están bajos pero la web va lenta, es tu código. Si los recursos están al 90%+, necesitas optimizar o escalar. Revisa siempre ambos.
Nuestra recomendación
Antes de escalar:
- Verifica que el cuello de botella es recursos
- Optimiza (caché, CDN, código)
- Si sigue saturado, escala
Estrategia de escalado:
- Empieza vertical (más simple)
- Separa BD cuando tengas +8GB RAM
- Horizontal solo si necesitas HA o mucha escala
¿No sabes si necesitas escalar? La administración gestionada de Avantys incluye monitorización y recomendaciones de escalado.
Conclusión
Escalar no es la primera solución, es la última después de optimizar. Pero cuando realmente necesitas más recursos, el escalado vertical es simple y efectivo para la mayoría de casos.
Monitoriza constantemente, optimiza primero, y escala cuando sea necesario.
¿Necesitas un VPS que escale fácilmente? Explora los VPS de Avantys con upgrade sin downtime.
¿Quieres que lo hagamos por ti?
En Avantys gestionamos tu web, hosting y crecimiento digital de punta a punta. Tú a lo importante.