Square Cloud met en œuvre des limites de ressources basées sur les conteneurs afin de garantir l’isolation, la stabilité et une répartition équitable de l’infrastructure entre les applications.
Exigences minimales de ressources
Chaque projet hébergé sur la plateforme Square Cloud a des exigences minimales de ressources spécifiques pour garantir des performances optimales :
- Bots : Minimum de 256 Mo de RAM requis.
- Sites web : Minimum de 512 Mo de RAM requis.
- Bases de données de cache : Minimum de 512 Mo de RAM requis.
- Bases de données générales : Minimum de 1 Go de RAM requis.
Pourquoi des minimums de RAM existent-ils ?
Les conteneurs ont une surcharge opérationnelle obligatoire : runtime du langage, bibliothèques de l’OS et tampons réseau. En dessous de 256 Mo, l’OOM Killer du noyau a tendance à interrompre les processus au démarrage ou pendant le ramasse-miettes, rendant l’application inviable.
Implications techniques :
- Chaque conteneur consomme 1 IPv4 dynamique et des IOPS de stockage NVMe
- Les allocations minimales évitent la fragmentation des ressources (effet « noisy neighbor »)
- Formule des snapshots quotidiens :
(Total RAM / 256) * 2 (approximatif ; le quota exact par plan peut être inférieur sur les niveaux supérieurs)
Données d’impact : Après la mise en place de la limite minimale de 256 Mo, la stabilité des applications a considérablement augmenté, réduisant le taux de crash dû à l’OOM (Out of Memory) de 97,7 %.
Allocation CPU
Réponse courte : le CPU est alloué en fonction de la RAM configurée. Augmenter la RAM accorde généralement davantage de vCPU.
Règles
Plans à vCPU unique
Les applications sur les plans à 1 vCPU reçoivent la pleine capacité sans throttling.
Plans multicœurs (≥2 vCPU)
- Plancher de performance : les applications avec ≥512 Mo de RAM reçoivent au moins 2 vCPU.
- Mise à l’échelle proportionnelle :
- Hobby (≤2 vCPU) : +1 vCPU par 512 Mo de RAM
- Standard / Pro / Enterprise : +1 vCPU par 1 Go (1024 Mo) de RAM
Exemples
| Plan | Capacité du plan | RAM configurée | vCPU alloués |
|---|
| Standard | 4 Go / 4 vCPU | 1 Go | 2 vCPU (plancher) |
| Standard | 4 Go / 4 vCPU | 4 Go | 4 vCPU (max) |
| Enterprise | 128 Go / 16 vCPU | 2 Go | 2 vCPU |
| Enterprise | 128 Go / 16 vCPU | 16 Go | 16 vCPU |
Throttling et limites de sécurité
Le système applique la limite de vCPU du plan et procède à un nivellement pour maintenir une répartition équitable. Une élasticité à court terme peut accorder des vCPU supplémentaires lors des pics, mais elle n’est pas garantie.
Utilisations CPU interdites :
- Minage de cryptomonnaies
- Charges de travail ML intensives et non restreintes sans autorisation
- Abus délibéré des ressources
Les infractions entraînent le statut LACK_OF_CPU et une suspension immédiate.
Limites réseau
La bande passante évolue avec la RAM : +50 Mbps par 256 Mo de RAM.
| RAM allouée | Bande passante |
|---|
| 256 Mo | 50 Mbps |
| 512 Mo | 100 Mbps |
| 1 Go | 200 Mbps |
| 2 Go | 400 Mbps |
| 4 Go | 800 Mbps |
| 8 Go | 1600 Mbps |
| 10 Go | 2000 Mbps |
Pour des besoins supérieurs à 2000 Mbps, contactez le support.
Limites de stockage
Tous les projets reçoivent 10 Go de stockage NVMe par défaut.
Caractéristiques :
- NVMe de qualité entreprise
- Persistant à travers les déploiements et les redémarrages
- IOPS et débit élevés
Statuts de dépassement de limite
LACK_OF_RAM
Quand : l’application dépasse la RAM allouée ou le noyau signale un OOM.
Action : le processus est interrompu immédiatement pour protéger la stabilité de l’hôte.
Comment corriger :
- Identifiez les fuites de mémoire avec des profilers (Node.js :
--inspect, Python : memory_profiler).
- Réduisez les caches en mémoire ou déplacez-les vers Redis.
- Augmentez la RAM allouée dans le panneau de contrôle.
LACK_OF_CPU
Quand : une utilisation CPU soutenue dépasse les limites raisonnables pour l’allocation.
Action : le processus est interrompu avec le statut LACK_OF_CPU.
Comment corriger :
- Profilez les points chauds CPU (Node.js :
0x, Python : cProfile).
- Optimisez les boucles chaudes, les requêtes en base de données et les opérations liées aux I/O.
- Augmentez la RAM pour obtenir davantage de vCPU (voir le tableau d’allocation CPU).
- Déchargez le travail lourd vers des workers asynchrones ou des jobs par lots.
Compromis : augmenter la RAM pour gagner du CPU augmente les coûts. Évaluez si l’optimisation du code est moins coûteuse que la montée en charge.