Objetivos de aprendizaje
Después de leer este artículo podrás:
- Medir el consumo real de RAM y CPU de tu aplicación
- Calcular la RAM a contratar con margen para los picos
- Reconocer las señales de falta de RAM o de CPU y actuar
No existe un número universal de RAM para una aplicación. Un bot que solo responde comandos, una API con caché en memoria y un sitio con renderizado en el servidor consumen cantidades muy distintas, y la misma aplicación cambia de consumo cuando gana usuarios. Por eso el dimensionamiento correcto empieza por la medición, no por una corazonada ni por una tabla de internet.
Contratar menos de lo que necesitas tumba la aplicación. Contratar mucho más es pagar cada mes por memoria parada.
¿Qué diferencia hay entre RAM y CPU al dimensionar?#
La RAM es un límite rígido. Cuando la aplicación intenta usar más memoria que el límite del contenedor, el sistema termina el proceso. No hay lentitud gradual: funciona y, de repente, el proceso muere.
La CPU es un límite flexible. Con poca CPU, la aplicación se vuelve más lenta, las respuestas tardan y las colas crecen, pero sigue en pie. Por eso la RAM suele ser el primer recurso a dimensionar, y la CPU entra como segundo paso, para comprobar si algo está saturado.
¿Cómo medir la RAM que la aplicación usa de verdad?#
Mide el pico con la aplicación funcionando en condiciones parecidas a las de producción: el mismo número de servidores en el bot, los mismos datos, el mismo tráfico. El consumo justo después de arrancar engaña, porque las cachés y las conexiones todavía no se han llenado.
En Node.js, process.memoryUsage() devuelve valores en bytes. El campo rss es la memoria total del proceso, que es lo que importa para el límite del contenedor:
// medir.js: imprime el consumo cada 10 segundos
const mb = (n) => (n / 1024 / 1024).toFixed(0);
setInterval(() => {
const m = process.memoryUsage();
console.log(`rss=${mb(m.rss)} MB heapUsed=${mb(m.heapUsed)} MB`);
}, 10_000);En Python, el módulo resource informa el pico de memoria del proceso. En Linux, ru_maxrss viene en KiB:
import resource
def pico_mb() -> float:
# Linux: ru_maxrss en KiB (en macOS viene en bytes)
return resource.getrusage(resource.RUSAGE_SELF).ru_maxrss / 1024
print(f"pico de memoria: {pico_mb():.0f} MB")En Java, la JVM usa memoria además del heap (metaspace, hilos, buffers), así que el límite del contenedor tiene que cubrir el proceso entero, no solo el -Xmx. En Linux, la JVM detecta el límite del contenedor por defecto.
Deja la medición corriendo durante horas o días y anota el mayor valor de rss. Ese es tu pico.
¿Cuánto margen sumar al pico?#
Una regla práctica sencilla: el pico medido multiplicado por 1,3, redondeado al siguiente tamaño disponible.
| Pico medido | Con 30% de margen | Contratar |
|---|---|---|
| 140 MB | 182 MB | 256 MB |
| 310 MB | 403 MB | 512 MB |
| 700 MB | 910 MB | 1 GB |
El margen cubre picos poco frecuentes, como un lote grande de datos, una reconexión masiva o una recolección de basura retrasada. Si el consumo varía mucho entre mediciones, sube el margen al 50%.
¿Cómo saber si falta RAM?#
Las señales más comunes:
- La aplicación se detiene o se reinicia sola, sin stack trace de un error de código.
- El log termina de golpe, sin mensaje de cierre.
- El gráfico de memoria sube en escalera y nunca baja.
- En Node.js aparece
FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory.
Los dos últimos casos suelen apuntar a una fuga: una caché sin límite, un array global que solo crece, listeners que nunca se eliminan. Aumentar la RAM solo retrasa la caída. Primero corrige, después dimensiona. Mira cómo leer los logs de la aplicación para encontrar el momento exacto de la caída.
En Node.js, ajustas el límite del heap de V8 con --max-old-space-size=SIZE, en MiB (documentado en la CLI de Node.js). Si contrataste más memoria y el heap sigue desbordándose, ese parámetro es el sospechoso.
¿Cómo saber si falta CPU?#
La CPU saturada aparece como lentitud, no como caída: comandos del bot que tardan segundos, peticiones que superan el tiempo límite, latencia que sube junto con el tráfico. Compara el uso de CPU con el tiempo de respuesta. Si ambos suben juntos y la CPU se queda cerca del techo, falta CPU.
Antes de pagar por más, entiende el tipo de carga:
- Node.js ejecuta tu JavaScript en un hilo. Más núcleos solo ayudan con workers o varios procesos.
- Python con hilos normales tampoco paraleliza código puro de CPU por el GIL (en el build estándar de CPython; el build opcional free-threaded de la 3.13+ elimina el GIL). Usa procesos o bibliotecas nativas.
- Tareas pesadas (imagen, video, IA, criptografía) consumen CPU de verdad y justifican más recursos.
Para un bot que responde comandos o una API que lee y escribe en la base de datos, el cuello de botella casi siempre es la red o la base de datos, no la CPU. Para convertir estos números en presupuesto, consulta cuánto cuesta alojar un sitio web.
¿Qué cambia cuando la aplicación crece?#
El consumo crece con el número de usuarios, de servidores o de elementos en caché. Revisa el dimensionamiento cuando:
- El número de usuarios o servidores se duplique.
- Agregues una biblioteca grande o una caché en memoria.
- Aparezcan reinicios que antes no existían.
Si un solo proceso no da abasto, la escala horizontal reparte la carga entre varias instancias detrás de un mismo dominio. Cada instancia sigue necesitando su propia RAM, así que el costo total es la suma de todas. Para bots de Discord, hay una referencia específica en cuánta RAM necesita un bot de Discord.
Cómo hacerlo en Square Cloud#
En Square Cloud, el número que mediste se convierte en la RAM de la aplicación, elegida en el deploy y cambiada después en la configuración o por la API. El panel muestra métricas de CPU, RAM y red con 24 horas de historial, así que puedes medir el pico en producción y comprobar si el margen del 30% se sostiene. Si sobra memoria, reduce; si falta, aumenta. No hay autoscaling: el ajuste es una decisión tuya, basada en esas métricas.
La RAM del plan es un pool compartido entre tus aplicaciones, con un mínimo de 256 MB por aplicación de fondo, como un bot, y de 512 MB por aplicación web. En el Hobby de 1 GB, por ejemplo, caben un bot de 256 MB y una API de 512 MB. El vCPU del plan es el techo de cada entorno, calculado a partir de la RAM asignada, y no se suma entre aplicaciones. Los planes Hobby empiezan en R$12,49 al mes.
Si la aplicación se queda sin memoria, se detiene y no vuelve sola: sube la RAM e iníciala de nuevo. El reinicio automático, activado por defecto en el deploy desde el panel, solo vuelve a arrancar un proceso que termina con un error.
Compara los planes en precios y mira qué puedes ajustar en cada aplicación en funciones.
Deploy
Sube desde GitHub, la CLI o un ZIP y publica en segundos
Preguntas frecuentes
¿Cuánta RAM necesita un bot o una API pequeña?
Depende del código y de las bibliotecas, así que el número correcto sale de la medición. Mide el pico con tráfico real, suma un 30% de margen y redondea hacia arriba.
¿Qué pasa cuando la aplicación se queda sin RAM?
En Linux con contenedores, el kernel termina el proceso que supera el límite de memoria (OOM kill) y el log suele mostrar solo que el proceso murió. La señal es un proceso que muere sin error de código en el log; si la plataforma lo reinicia sola, ves reinicios seguidos.
¿Más CPU hace la aplicación más rápida?
Solo si la CPU es el cuello de botella. Node.js ejecuta tu JavaScript en un único hilo, así que más núcleos no aceleran un único proceso sin workers o varios procesos.
¿Vale la pena contratar más RAM por si acaso?
Un margen del 30% al 50% sobre el pico es razonable. Mucho más que eso es pagar por memoria parada. Si la RAM crece sin parar, el problema es una fuga, no la falta de plan.
Más en Deploy
Ver los 33 artículos- Qué son las variables de entornoLas variables de entorno son pares clave-valor que el sistema operativo entrega a un proceso al iniciar. Aprende a leerlas en Node.js y Python sin exponer tokens.
- Qué es un deploy o despliegueUn deploy o despliegue lleva una versión de tu código a un servidor, la prepara y la pone en marcha. Conoce las etapas, los métodos y cómo hacer rollback.
- ¿Cuánto cuesta hospedar una aplicación Node.js?Hospedar Node.js cuesta desde cero, con límites, hasta unos pocos dólares al mes. Mira qué define el precio, cuánta RAM usa tu app y cómo cobra cada opción.
- La mejor forma de hospedar una aplicación Node.jsLa mejor forma de hospedar Node.js depende del tipo de proceso: siempre encendido o por solicitud. Compara VPS, plataforma de contenedores y serverless por caso.