> ## Documentation Index
> Fetch the complete documentation index at: https://docs.squarecloud.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Límites y restricciones de la plataforma

> Especificaciones técnicas para la asignación de RAM/CPU, límites de red y almacenamiento en Square Cloud.

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)

<Note>**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%**.</Note>

## 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:

1. Encuentra fugas de memoria con profilers (Node.js: `--inspect`, Python: `memory_profiler`).
2. Reduce las cachés en memoria o mueve las cachés a Redis.
3. 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:

1. Perfila los puntos calientes de CPU (Node.js: `0x`, Python: `cProfile`).
2. Optimiza los bucles calientes, las consultas a la base de datos y las operaciones limitadas por I/O.
3. Aumenta la RAM para obtener más vCPUs (consulta la tabla de asignación de CPU).
4. 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.
