Skip to main content
A Square Cloud implementa limites de recursos baseados em containers para garantir isolamento, estabilidade e distribuição justa da infraestrutura entre as 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.
  • Sites: mínimo de 512 MB de RAM.
  • Bancos de dados de cache: mínimo de 512 MB de RAM.
  • Bancos de dados gerais: mínimo de 1 GB de RAM.

Por que existem mínimos de RAM?

Containers têm um 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 encerrar processos durante o boot ou o garbage collection, o que torna a aplicação inviável. Implicações técnicas:
  • Cada container consome 1 IPv4 dinâmico e IOPS de armazenamento NVMe
  • Alocações mínimas evitam a fragmentação de recursos (efeito noisy neighbor)
  • Fórmula de snapshots diários: (RAM Total / 256) * 2 (aproximada; a quantidade exata por plano pode ser menor nos planos mais altos)
Dado de impacto: depois que implementamos o 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

Resposta curta: a CPU é alocada com base na RAM configurada. Aumentar a RAM costuma dar mais vCPUs.

Regras

Planos de 1 vCPU

As aplicações em planos de 1 vCPU recebem a capacidade total, sem throttling.

Planos multicore (≥2 vCPU)

  • Piso de performance: aplicações com ≥512 MB de RAM recebem pelo menos 2 vCPUs.
  • Escala proporcional:
    • Hobby (≤2 vCPU): +1 vCPU a cada 512 MB de RAM
    • Standard / Pro / Enterprise: +1 vCPU a cada 1 GB (1024 MB) de RAM

Exemplos

Throttling e limites de segurança

O sistema aplica o limite de vCPUs do plano e faz um nivelamento para manter a distribuição justa. Uma elasticidade de curto prazo pode conceder vCPUs extras em picos, mas isso não é garantido. Usos de CPU proibidos:
  • Mineração de criptomoedas
  • Cargas de machine learning intensivas e sem restrição, sem autorização
  • Abuso deliberado de recursos
Esses usos violam a política contra abuso, mineração de cripto e spam. Além disso, uma aplicação que mantém todas as suas vCPUs ocupadas é parada com LACK_OF_CPU.

Limites de rede

Toda aplicação tem largura de banda dedicada, igual para upload e download, que escala proporcionalmente à RAM alocada: +50 Mbps a cada 256 MB. A banda é reservada ao seu container, sem compartilhamento com vizinhos, e o tráfego nunca é medido nem cobrado. Alguns exemplos: Para cargas sustentadas de alto tráfego, o suporte pode configurar um cluster dedicado. Turbo de inicialização. Toda inicialização ganha um impulso bem acima da banda do plano: instalar dependências, baixar modelos ou reconstruir caches é rápido, independentemente da alocação. Bancos de dados têm banda dedicada própria, nas duas direções, dimensionada pela RAM.

Limites de armazenamento

Todos os projetos recebem 10 GB de armazenamento NVMe por padrão. Características:
  • NVMe de classe empresarial
  • Persistente entre deploys e reinícios
  • IOPS e throughput altos

Status de limite excedido

Quando uma aplicação passa dos seus recursos, a Square Cloud a para, escreve nos logs dela uma linha [SQUARE-SHIELD] com o motivo e envia um e-mail para você. Esta tabela é a referência para a qual as outras páginas apontam; as correções estão logo abaixo. A central de ajuda explica os e-mails de alerta em alerta de queda: bloqueios por RAM, CPU e requisições.

LACK_OF_RAM

A aplicação atingiu a RAM alocada, então o processo foi parado para proteger o host. Como resolver:
  1. Encontre vazamentos de memória com um profiler (Node.js: --inspect, Python: memory_profiler). Veja vazamento de memória em Node.js.
  2. Reduza os caches em memória ou mova-os para o Redis.
  3. Aumente a RAM da aplicação no dashboard, ou aumente o MEMORY no arquivo de configuração.

LACK_OF_CPU

A aplicação usou todas as suas vCPUs por um período prolongado, então o processo foi parado. Como resolver:
  1. Faça o profiling dos pontos críticos de CPU (Node.js: 0x, Python: cProfile). Veja CPU em 100%: dicas de otimização.
  2. Otimize loops críticos, queries de banco de dados e operações I/O-bound.
  3. Aumente a RAM para obter mais vCPUs (veja Alocação de CPU).
  4. Mova o trabalho pesado para workers assíncronos ou jobs em lote.
Trade-off: aumentar a RAM para ganhar CPU aumenta os custos. Avalie se otimizar o código sai mais barato do que aumentar os recursos.

CONTAINER_TEMPORARILY_SUSPENDED

Os logs mostraram [SQUARE-SHIELD] ABUSE_REQUESTS: a aplicação enviou requisições ao Discord ou a sites squareweb.app em um ritmo abusivo por um período prolongado. Quase sempre isso é um loop infinito, uma nova tentativa sem intervalo ou um cache ausente, não popularidade real. A aplicação foi parada e, até o bloqueio terminar, iniciá-la falha com CONTAINER_TEMPORARILY_SUSPENDED. Como resolver:
  1. Leia o e-mail e os últimos logs para encontrar o código que envia as requisições.
  2. Guarde em cache o que você busca, adicione um intervalo entre as novas tentativas e respeite os cabeçalhos de rate limit da API que você chama. Veja rate limits da API do Discord.
  3. Aguarde um pouco e inicie a aplicação de novo.