Square Cloud implementa límites de recursos basados en contenedores para garantizar el aislamiento, la estabilidad y una distribución justa de la infraestructura entre las aplicaciones.
Requisitos mínimos de recursos
Cada proyecto alojado en la plataforma de Square Cloud tiene requisitos mínimos de recursos específicos para garantizar un rendimiento óptimo:
- Bots: Se requiere un mínimo de 256 MB de RAM.
- Sitios web: Se requiere un mínimo de 512 MB de RAM.
- Bases de datos de caché: Se requiere un mínimo de 512 MB de RAM.
- Bases de datos generales: Se requiere un mínimo de 1 GB de RAM.
¿Por qué existen los mínimos de RAM?
Los contenedores tienen una sobrecarga operativa obligatoria: el runtime del lenguaje, las bibliotecas del sistema operativo y los búferes de red. Por debajo de 256 MB, el OOM Killer del kernel tiende a terminar procesos durante el arranque o la recolección de basura, lo que hace inviable la aplicación.
Implicaciones técnicas:
- Cada contenedor consume 1 IPv4 dinámica y IOPS de almacenamiento NVMe
- Las asignaciones mínimas evitan la fragmentación de recursos (efecto de vecino ruidoso)
- Fórmula de snapshots diarios:
(Total RAM / 256) * 2 (aproximada; la asignación exacta por plan puede ser menor en los niveles superiores)
Datos de impacto: Tras implementar el límite mínimo de 256 MB, la estabilidad de las aplicaciones aumentó drásticamente, reduciendo la tasa de fallos por OOM (Out of Memory) en un 97,7%.
Asignación de CPU
Respuesta corta: la CPU se asigna en función de la RAM configurada. Aumentar la RAM normalmente otorga más vCPUs.
Reglas
Planes de una sola vCPU
Las aplicaciones en planes de 1 vCPU reciben capacidad completa sin throttling.
Planes multinúcleo (≥2 vCPU)
- Piso de rendimiento: las aplicaciones con ≥512 MB de RAM reciben al menos 2 vCPUs.
- Escalado proporcional:
- Hobby (≤2 vCPU): +1 vCPU por cada 512 MB de RAM
- Standard / Pro / Enterprise: +1 vCPU por cada 1 GB (1024 MB) de RAM
Ejemplos
| Plan | Capacidad del plan | RAM configurada | vCPUs asignadas |
|---|
| Standard | 4 GB / 4 vCPU | 1 GB | 2 vCPUs (piso) |
| Standard | 4 GB / 4 vCPU | 4 GB | 4 vCPUs (máx) |
| Enterprise | 128 GB / 16 vCPU | 2 GB | 2 vCPUs |
| Enterprise | 128 GB / 16 vCPU | 16 GB | 16 vCPUs |
Throttling y límites de seguridad
El sistema aplica el límite de vCPU del plan y realiza un nivelado para mantener una distribución justa. La elasticidad a corto plazo puede otorgar vCPUs adicionales durante picos, pero no está garantizada.
Usos prohibidos de la CPU:
- Minería de criptomonedas
- Cargas de trabajo de ML intensivas y sin restricciones sin autorización
- Abuso deliberado de recursos
Las infracciones resultan en el estado LACK_OF_CPU y suspensión inmediata.
Límites de red
El ancho de banda escala con la RAM: +50 Mbps por cada 256 MB de RAM.
| RAM asignada | Ancho de banda |
|---|
| 256 MB | 50 Mbps |
| 512 MB | 100 Mbps |
| 1 GB | 200 Mbps |
| 2 GB | 400 Mbps |
| 4 GB | 800 Mbps |
| 8 GB | 1600 Mbps |
| 10 GB | 2000 Mbps |
Para requisitos superiores a 2000 Mbps contacta con soporte.
Límites de almacenamiento
Todos los proyectos reciben 10 GB de almacenamiento NVMe de forma predeterminada.
Características:
- NVMe de nivel empresarial
- Persistente a través de despliegues y reinicios
- Alto IOPS y rendimiento
Estados de límite excedido
LACK_OF_RAM
Cuándo: la aplicación excede la RAM asignada o el kernel señala OOM.
Acción: el proceso se termina de inmediato para proteger la estabilidad del host.
Cómo solucionarlo:
- Encuentra fugas de memoria con profilers (Node.js:
--inspect, Python: memory_profiler).
- Reduce las cachés en memoria o mueve las cachés a Redis.
- Aumenta la RAM asignada en el panel de control.
LACK_OF_CPU
Cuándo: el uso sostenido de CPU excede los límites razonables para la asignación.
Acción: el proceso se termina con el estado LACK_OF_CPU.
Cómo solucionarlo:
- Perfila los puntos calientes de CPU (Node.js:
0x, Python: cProfile).
- Optimiza los bucles calientes, las consultas a la base de datos y las operaciones limitadas por I/O.
- Aumenta la RAM para obtener más vCPUs (consulta la tabla de asignación de CPU).
- Descarga el trabajo pesado a workers asíncronos o trabajos por lotes.
Contrapartida: aumentar la RAM para ganar CPU incrementa los costes. Evalúa si optimizar el código es más barato que escalar.