Skip to main content
Square Cloud implementa limiti di risorse basati su container per garantire isolamento, stabilità e una distribuzione equa dell’infrastruttura tra le applicazioni.

Requisiti minimi di risorse

Ogni progetto ospitato sulla piattaforma Square Cloud ha requisiti minimi di risorse specifici per garantire prestazioni ottimali:
  • Bot: Minimo di 256 MB di RAM richiesti.
  • Siti web: Minimo di 512 MB di RAM richiesti.
  • Database cache: Minimo di 512 MB di RAM richiesti.
  • Database generali: Minimo di 1 GB di RAM richiesti.

Perché esistono i minimi di RAM?

I container hanno un overhead operativo obbligatorio: runtime del linguaggio, librerie del sistema operativo e buffer di rete. Al di sotto di 256 MB, l’OOM Killer del kernel tende a terminare i processi durante il boot o la garbage collection, rendendo l’applicazione inutilizzabile. Implicazioni tecniche:
  • Ogni container consuma 1 IPv4 dinamico e IOPS di storage NVMe
  • Le allocazioni minime prevengono la frammentazione delle risorse (effetto noisy neighbor)
  • Formula degli snapshot giornalieri: (Total RAM / 256) * 2 (approssimativa; l’allocazione esatta per piano potrebbe essere inferiore sui livelli più alti)
Dati sull’impatto: Dopo aver implementato il limite minimo di 256 MB, la stabilità delle applicazioni è aumentata drasticamente, riducendo il tasso di crash dovuti a OOM (Out of Memory) del 97,7%.

Allocazione della CPU

Risposta breve: la CPU viene allocata in base alla RAM configurata. Aumentare la RAM garantisce tipicamente più vCPU.

Regole

Piani a vCPU singola

Le applicazioni sui piani a 1 vCPU ricevono la piena capacità senza throttling.

Piani multicore (≥2 vCPU)

  • Soglia minima di prestazioni: le applicazioni con ≥512 MB di RAM ricevono almeno 2 vCPU.
  • Scalabilità proporzionale:
    • Hobby (≤2 vCPU): +1 vCPU per 512 MB di RAM
    • Standard / Pro / Enterprise: +1 vCPU per 1 GB (1024 MB) di RAM

Esempi

Throttling e limiti di sicurezza

Il sistema applica il limite di vCPU del piano e applica un livellamento per mantenere equa la distribuzione. L’elasticità a breve termine può concedere vCPU aggiuntive durante i picchi, ma non è garantita. Usi della CPU vietati:
  • Mining di criptovalute
  • Carichi di lavoro ML intensivi e non limitati senza autorizzazione
  • Abuso deliberato delle risorse
Questi usi violano la policy contro abusi, mining di criptovalute e spam. A parte questo, un’applicazione che tiene occupate tutte le sue vCPU viene arrestata con LACK_OF_CPU.

Limiti di rete

Ogni applicazione ha banda dedicata, uguale in upload e download, che scala proporzionalmente alla RAM allocata: +50 Mbps ogni 256 MB. È riservata al tuo container, mai condivisa con i vicini, e il traffico non viene mai misurato né addebitato. Alcuni esempi: Per carichi sostenuti ad alto traffico, il supporto può configurare un cluster dedicato. Turbo di avvio. Ogni avvio riceve una spinta ben oltre la banda del piano: installare dipendenze, scaricare modelli o ricostruire cache è veloce, qualunque sia la tua allocazione. I database hanno una banda dedicata propria, in entrambe le direzioni, dimensionata sulla loro RAM.

Limiti di storage

Tutti i progetti ricevono per impostazione predefinita 10 GB di storage NVMe. Caratteristiche:
  • NVMe di livello enterprise
  • Persistente attraverso deploy e riavvii
  • IOPS e throughput elevati

Stati di superamento dei limiti

Quando un’applicazione supera le sue risorse, Square Cloud la arresta, scrive nei suoi log una riga [SQUARE-SHIELD] con il motivo e ti invia un’email. Questa tabella è il riferimento a cui rimandano le altre pagine; le soluzioni sono subito sotto. Il centro assistenza spiega le email di avviso in avvisi di inattività: blocchi di RAM, CPU e richieste.

LACK_OF_RAM

L’applicazione ha raggiunto la RAM allocata, quindi il processo è stato arrestato per proteggere l’host. Come risolvere:
  1. Individua i memory leak con un profiler (Node.js: --inspect, Python: memory_profiler). Vedi memory leak in Node.js.
  2. Riduci le cache in memoria o spostale su Redis.
  3. Aumenta la RAM dell’applicazione nella dashboard, oppure alza MEMORY nel file di configurazione.

LACK_OF_CPU

L’applicazione ha usato tutte le sue vCPU per un periodo prolungato, quindi il processo è stato arrestato. Come risolvere:
  1. Profila gli hotspot della CPU (Node.js: 0x, Python: cProfile). Vedi CPU al 100%: consigli di ottimizzazione.
  2. Ottimizza i loop critici, le query al database e le operazioni I/O-bound.
  3. Aumenta la RAM per ottenere più vCPU (vedi Allocazione della CPU).
  4. Sposta il lavoro pesante su worker asincroni o job batch.
Compromesso: aumentare la RAM per ottenere CPU aumenta i costi. Valuta se ottimizzare il codice sia più economico che scalare.

CONTAINER_TEMPORARILY_SUSPENDED

I log hanno mostrato [SQUARE-SHIELD] ABUSE_REQUESTS: l’applicazione ha inviato richieste a Discord o a siti squareweb.app a un ritmo abusivo per un periodo prolungato. Quasi sempre si tratta di un loop infinito, di un nuovo tentativo senza attesa o di una cache mancante, non di reale popolarità. L’applicazione è stata arrestata e, finché il blocco non termina, il suo avvio fallisce con CONTAINER_TEMPORARILY_SUSPENDED. Come risolvere:
  1. Leggi l’email e gli ultimi log per trovare il codice che invia le richieste.
  2. Metti in cache ciò che scarichi, aggiungi un’attesa tra un tentativo e l’altro e rispetta gli header di rate limit dell’API che chiami. Vedi rate limit dell’API di Discord.
  3. Attendi qualche istante e avvia di nuovo l’applicazione.