> ## Documentation Index
> Fetch the complete documentation index at: https://docs.squarecloud.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Limites et restrictions de la plateforme

> Spécifications techniques pour l'allocation RAM/CPU, les limites réseau et de stockage sur Square Cloud.

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)

<Note>**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 %**.</Note>

## 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 :

1. Identifiez les fuites de mémoire avec des profilers (Node.js : `--inspect`, Python : `memory_profiler`).
2. Réduisez les caches en mémoire ou déplacez-les vers Redis.
3. 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 :

1. Profilez les points chauds CPU (Node.js : `0x`, Python : `cProfile`).
2. Optimisez les boucles chaudes, les requêtes en base de données et les opérations liées aux I/O.
3. Augmentez la RAM pour obtenir davantage de vCPU (voir le tableau d'allocation CPU).
4. 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.
