Square Cloud implementiert containerbasierte Ressourcenlimits, um Isolation, Stabilität und eine faire Verteilung der Infrastruktur über alle Anwendungen hinweg zu gewährleisten.
Mindestanforderungen an Ressourcen
Jedes auf der Square Cloud-Plattform gehostete Projekt hat spezifische Mindestanforderungen an Ressourcen, um eine optimale Leistung sicherzustellen:
- Bots: Mindestens 256 MB RAM erforderlich.
- Websites: Mindestens 512 MB RAM erforderlich.
- Cache-Datenbanken: Mindestens 512 MB RAM erforderlich.
- Allgemeine Datenbanken: Mindestens 1 GB RAM erforderlich.
Warum gibt es RAM-Mindestwerte?
Container haben einen zwingenden betrieblichen Overhead: die Sprach-Runtime, OS-Bibliotheken und Netzwerkpuffer. Unterhalb von 256 MB neigt der OOM Killer des Kernels dazu, Prozesse während des Boots oder der Garbage Collection zu beenden, was die Anwendung unbrauchbar macht.
Technische Auswirkungen:
- Jeder Container verbraucht 1 dynamische IPv4 und NVMe-Storage-IOPS
- Mindestzuweisungen verhindern Ressourcenfragmentierung (Noisy-Neighbor-Effekt)
- Formel für tägliche Snapshots:
(Total RAM / 256) * 2 (Näherungswert; das genaue Kontingent pro Plan kann in höheren Stufen niedriger sein)
Auswirkungsdaten: Nach Einführung des 256-MB-Mindestlimits stieg die Anwendungsstabilität drastisch und die Absturzrate aufgrund von OOM (Out of Memory) sank um 97,7 %.
CPU-Zuweisung
Kurz gesagt: Die CPU wird auf Basis des konfigurierten RAM zugewiesen. Mehr RAM gewährt in der Regel mehr vCPUs.
Regeln
Pläne mit einer einzelnen vCPU
Anwendungen auf Plänen mit 1 vCPU erhalten die volle Kapazität ohne Throttling.
Multicore-Pläne (≥2 vCPU)
- Leistungsuntergrenze: Anwendungen mit ≥512 MB RAM erhalten mindestens 2 vCPUs.
- Proportionale Skalierung:
- Hobby (≤2 vCPU): +1 vCPU pro 512 MB RAM
- Standard / Pro / Enterprise: +1 vCPU pro 1 GB (1024 MB) RAM
Beispiele
| Plan | Plan-Kapazität | Konfigurierter RAM | Zugewiesene vCPUs |
|---|
| Standard | 4 GB / 4 vCPU | 1 GB | 2 vCPUs (Untergrenze) |
| Standard | 4 GB / 4 vCPU | 4 GB | 4 vCPUs (max) |
| Enterprise | 128 GB / 16 vCPU | 2 GB | 2 vCPUs |
| Enterprise | 128 GB / 16 vCPU | 16 GB | 16 vCPUs |
Throttling und Sicherheitslimits
Das System erzwingt das vCPU-Limit des Plans und wendet Leveling an, um die Verteilung fair zu halten. Kurzfristige Elastizität kann während Lastspitzen zusätzliche vCPUs gewähren, ist jedoch nicht garantiert.
Verbotene CPU-Nutzungen:
- Kryptowährungs-Mining
- Uneingeschränkte, intensive ML-Workloads ohne Autorisierung
- Vorsätzlicher Ressourcenmissbrauch
Verstöße führen zum Status LACK_OF_CPU und zur sofortigen Sperrung.
Netzwerklimits
Die Bandbreite skaliert mit dem RAM: +50 Mbps pro 256 MB RAM.
| Zugewiesener RAM | Bandbreite |
|---|
| 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 |
Für Anforderungen über 2000 Mbps wende dich an den Support.
Speicherlimits
Alle Projekte erhalten standardmäßig 10 GB NVMe-Speicher.
Eigenschaften:
- NVMe der Enterprise-Klasse
- Persistent über Deploys und Neustarts hinweg
- Hohe IOPS und hoher Durchsatz
Status bei Überschreitung von Limits
LACK_OF_RAM
Wann: Die Anwendung überschreitet den zugewiesenen RAM oder der Kernel signalisiert OOM.
Aktion: Der Prozess wird sofort beendet, um die Host-Stabilität zu schützen.
Behebung:
- Finde Speicherlecks mit Profilern (Node.js:
--inspect, Python: memory_profiler).
- Reduziere In-Memory-Caches oder verlagere Caches nach Redis.
- Erhöhe den zugewiesenen RAM im Control Panel.
LACK_OF_CPU
Wann: Die anhaltende CPU-Auslastung überschreitet die für die Zuweisung angemessenen Limits.
Aktion: Der Prozess wird mit dem Status LACK_OF_CPU beendet.
Behebung:
- Profiliere CPU-Hotspots (Node.js:
0x, Python: cProfile).
- Optimiere heiße Schleifen, DB-Abfragen und I/O-gebundene Operationen.
- Erhöhe den RAM, um mehr vCPUs zu erhalten (siehe Tabelle zur CPU-Zuweisung).
- Lagere schwere Arbeit an asynchrone Worker oder Batch-Jobs aus.
Abwägung: Den RAM zu erhöhen, um CPU zu gewinnen, steigert die Kosten. Prüfe, ob eine Code-Optimierung günstiger ist als das Hochskalieren.