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 dedicado 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
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%.
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:
- Identifique memory leaks com profilers (Node.js:
--inspect, Python: memory_profiler)
- Reduza uso de cache in-memory ou migre para Redis
- 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:
- Profile hotspots de CPU (Node.js:
0x, Python: cProfile)
- Otimize loops, queries de banco e operações I/O-bound
- Aumente a RAM para obter mais vCPUs (ver tabela de alocação)
- 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.