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
| Piano | Capacità del piano | RAM configurata | vCPU allocate |
|---|
| Standard | 4 GB / 4 vCPU | 1 GB | 2 vCPU (minimo) |
| Standard | 4 GB / 4 vCPU | 4 GB | 4 vCPU (massimo) |
| Enterprise | 128 GB / 16 vCPU | 2 GB | 2 vCPU |
| Enterprise | 128 GB / 16 vCPU | 16 GB | 16 vCPU |
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
Le violazioni comportano lo stato LACK_OF_CPU e la sospensione immediata.
Limiti di rete
La banda scala con la RAM: +50 Mbps per ogni 256 MB di RAM.
| RAM allocata | 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 |
Per requisiti superiori a 2000 Mbps contatta il supporto.
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
LACK_OF_RAM
Quando: l’applicazione supera la RAM allocata o il kernel segnala un OOM.
Azione: il processo viene terminato immediatamente per proteggere la stabilità dell’host.
Come risolvere:
- Individua i memory leak con i profiler (Node.js:
--inspect, Python: memory_profiler).
- Riduci le cache in memoria o spostale su Redis.
- Aumenta la RAM allocata nel pannello di controllo.
LACK_OF_CPU
Quando: l’utilizzo sostenuto della CPU supera i limiti ragionevoli per l’allocazione.
Azione: processo terminato con stato LACK_OF_CPU.
Come risolvere:
- Profila gli hotspot della CPU (Node.js:
0x, Python: cProfile).
- Ottimizza i loop critici, le query al DB e le operazioni I/O-bound.
- Aumenta la RAM per ottenere più vCPU (vedi la tabella di allocazione della CPU).
- Delega il lavoro pesante a worker asincroni o job batch.
Compromesso: aumentare la RAM per ottenere CPU aumenta i costi. Valuta se l’ottimizzazione del codice sia più economica dello scaling up.