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

# Limites e Restrições da Plataforma

> Especificações técnicas de recursos, alocação de CPU/RAM, limites de rede e armazenamento da Square Cloud.

A Square Cloud implementa limites de recursos baseados em containerização para garantir isolamento, estabilidade e distribuição justa de infraestrutura entre aplicações.

## Requisitos Mínimos de Recursos

Cada projeto hospedado na Plataforma Square Cloud tem requisitos mínimos de recursos específicos para garantir um desempenho ideal:

* **Bots:** Mínimo de 256 MB de RAM requerido.
* **Websites:** Mínimo de 512 MB de RAM requerido.
* **Bancos de Dados de Cache:** Mínimo de 512 MB de RAM requerido.
* **Bancos de Dados Gerais:** Mínimo de 1 GB de RAM requerido.

### Por que existem mínimos de RAM?

Containers possuem overhead operacional obrigatório: runtime da linguagem, bibliotecas do sistema operacional e buffers de rede. Abaixo de 256 MB, o OOM Killer do kernel tende a terminar processos durante boot ou garbage collection, tornando a aplicação inviável.

**Implicações técnicas:**

* Cada container consome 1 IPv4 dinâmico e IOPS de storage NVMe
* Alocações mínimas previnem fragmentação de recursos (efeito noisy neighbor)
* Fórmula de snapshots diários: `(RAM Total / 256) * 2`

<Note>**Dado de Impacto:** Após implementarmos o limite mínimo de 256 MB, a estabilidade das aplicações aumentou drasticamente, reduzindo a taxa de crashes por OOM (Out of Memory) em **97,7%**.</Note>

## Alocação de CPU

A CPU é alocada dinamicamente com base na RAM configurada. O algoritmo balanceia performance de inicialização com estabilidade sob carga.

### Regras de Alocação

#### Planos de 1 vCPU

Aplicações recebem 100% da capacidade disponível sem throttling.

#### Planos Multicore (≥2 vCPU)

**Piso de performance:**

* Aplicações com ≥512 MB de RAM recebem no mínimo 2 vCPUs

**Escala proporcional:**

* **Hobby (≤2 vCPU):** +1 vCPU por 512 MB de RAM
* **Standard/Pro/Enterprise:** +1 vCPU por 1 GB (1024 MB) de RAM

### Exemplos de Alocação

| Plano      | RAM Total        | RAM Configurada | vCPUs Alocadas        |
| ---------- | ---------------- | --------------- | --------------------- |
| Standard   | 4 GB / 4 vCPU    | 1 GB            | 2 vCPUs (piso mínimo) |
| Standard   | 4 GB / 4 vCPU    | 4 GB            | 4 vCPUs (máximo)      |
| Enterprise | 128 GB / 16 vCPU | 2 GB            | 2 vCPUs               |
| Enterprise | 128 GB / 16 vCPU | 16 GB           | 16 vCPUs              |

### Throttling e Limites de Segurança

O sistema respeita o limite de vCPUs do plano e distribui capacidade proporcionalmente entre aplicações. Elasticidade temporária pode conceder vCPUs extras em picos, mas não é garantida.

**Uso proibido de CPU:**

* Mineração de criptomoedas
* Machine learning intensivo sem autorização
* Abusos intencionais de CPU

Violações resultam em status `LACK_OF_CPU` e suspensão imediata da aplicação.

## Limites de Rede

A largura de banda escala proporcionalmente à RAM alocada: **+50 Mbps por 256 MB de RAM**.

| RAM Alocada | Largura 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 acima de 2000 Mbps, contate o suporte técnico.

## Limites de Armazenamento

Todas as aplicações recebem **10 GB de storage NVMe** independente do plano.

**Características:**

* Storage de classe empresarial (NVMe).
* Persistente entre deploys e reinícios.
* IOPS e throughput de alta performance.

## Status de Limite Excedido

### LACK\_OF\_RAM

**Quando ocorre:** A aplicação excede a RAM alocada ou o kernel envia sinal de OOM (Out of Memory).

**Ação do sistema:** Terminação imediata do processo para preservar estabilidade do host.

**Como resolver:**

1. Identifique memory leaks com profilers (Node.js: `--inspect`, Python: `memory_profiler`)
2. Reduza uso de cache in-memory ou migre para Redis
3. Aumente a RAM alocada no painel de controle

### LACK\_OF\_CPU

**Quando ocorre:** A aplicação ultrapassa o limite de CPU por período sustentado.

**Ação do sistema:** Terminação do processo com status `LACK_OF_CPU`.

**Como resolver:**

1. Profile hotspots de CPU (Node.js: `0x`, Python: `cProfile`)
2. Otimize loops, queries de banco e operações I/O-bound
3. Aumente a RAM para obter mais vCPUs (ver tabela de alocação)
4. Considere migrar tarefas pesadas para workers assíncronos

**Trade-off:** Aumentar RAM para obter CPU adicional aumenta custos. Avalie se otimização de código é mais econômica que scale-up.
