Skip to main content
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

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
Diese Nutzungen verstoßen gegen die Richtlinie gegen Missbrauch, Krypto-Mining und Spam. Unabhängig davon wird eine Anwendung, die alle ihre vCPUs dauerhaft auslastet, mit LACK_OF_CPU gestoppt.

Netzwerklimits

Jede Anwendung erhält dedizierte Bandbreite, gleich für Upload und Download, die proportional zum zugewiesenen RAM skaliert: +50 Mbps pro 256 MB. Sie ist für deinen Container reserviert, wird nie mit Nachbarn geteilt, und der Traffic wird weder gemessen noch berechnet. Einige Beispiele: Für dauerhaft traffic-intensive Workloads kann der Support einen dedizierten Cluster einrichten. Start-Turbo. Jeder Start erhält einen Schub weit über der Bandbreite des Plans: Abhängigkeiten installieren, Modelle herunterladen oder Caches neu aufbauen geht schnell, unabhängig von deiner Zuweisung. Datenbanken haben ihre eigene dedizierte Bandbreite, in beide Richtungen, passend zu ihrem RAM.

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

Wenn eine Anwendung ihre Ressourcen überschreitet, stoppt Square Cloud sie, schreibt eine Zeile [SQUARE-SHIELD] mit dem Grund in ihre Logs und schickt dir eine E-Mail. Diese Tabelle ist die Referenz, auf die die anderen Seiten verweisen; die Lösungen stehen darunter. Das Hilfe-Center erklärt die Warn-E-Mails unter Ausfallwarnungen: RAM, CPU und Sperren von Anfragen.

LACK_OF_RAM

Die Anwendung hat ihren zugewiesenen RAM erreicht, deshalb wurde der Prozess gestoppt, um den Host zu schützen. Behebung:
  1. Finde Speicherlecks mit einem Profiler (Node.js: --inspect, Python: memory_profiler). Siehe Speicherlecks in Node.js.
  2. Reduziere In-Memory-Caches oder verlagere sie nach Redis.
  3. Erhöhe den RAM der Anwendung im Dashboard oder setze MEMORY in der Konfigurationsdatei höher.

LACK_OF_CPU

Die Anwendung hat über längere Zeit alle ihre vCPUs ausgelastet, deshalb wurde der Prozess gestoppt. Behebung:
  1. Profiliere CPU-Hotspots (Node.js: 0x, Python: cProfile). Siehe CPU bei 100 %: Tipps zur Optimierung.
  2. Optimiere heiße Schleifen, Datenbankabfragen und I/O-gebundene Operationen.
  3. Erhöhe den RAM, um mehr vCPUs zu erhalten (siehe CPU-Zuweisung).
  4. Verlagere schwere Arbeit in asynchrone Worker oder Batch-Jobs.
Abwägung: Den RAM zu erhöhen, um CPU zu gewinnen, steigert die Kosten. Prüfe, ob eine Optimierung des Codes günstiger ist als das Hochskalieren.

CONTAINER_TEMPORARILY_SUSPENDED

Die Logs zeigten [SQUARE-SHIELD] ABUSE_REQUESTS: Die Anwendung hat über längere Zeit Anfragen in missbräuchlicher Rate an Discord oder an squareweb.app-Websites gesendet. Fast immer steckt eine Endlosschleife, ein Wiederholungsversuch ohne Pause oder ein fehlender Cache dahinter, keine echte Beliebtheit. Die Anwendung wurde gestoppt, und bis die Sperre endet, schlägt ein Start mit CONTAINER_TEMPORARILY_SUSPENDED fehl. Behebung:
  1. Lies die E-Mail und die letzten Logs, um den Code zu finden, der die Anfragen sendet.
  2. Cache, was du abrufst, baue eine Pause zwischen Wiederholungsversuchen ein und beachte die Rate-Limit-Header der API, die du aufrufst. Siehe Rate-Limits der Discord-API.
  3. Warte einen Moment und starte die Anwendung erneut.