Startseite
» Gewusst wie
»
Erhöhen Sie die Speicherkapazität des CODE-Containers ohne zu raten
Erhöhen Sie die Speicherkapazität des CODE-Containers ohne zu raten
Um einem Collabora Online CODE-Container mehr Arbeitsspeicher zuzuweisen, erhöhen Sie das Docker-Limit in der Konfiguration, mit der er erstellt wurde. Erstellen Sie den Container anschließend neu und überprüfen Sie das effektive Limit mit ` docker run` docker inspectoder ` docker statsdocker run`. Die Erhöhung einer Anwendungseinstellung erhöht nicht das Containerlimit von Docker, und der Host oder die virtuelle Docker Desktop-Maschine muss über ausreichend Arbeitsspeicher verfügen, um ein höheres Limit zu unterstützen.
Beispiel: Riley verwaltet eine Docker Compose-Bereitstellung auf einem einzelnen Host. Angenommen, docker statsdie Speicherkapazität beträgt 2 GiB und die Auslastung liegt nahe an diesem Wert, während mehrere Dokumente geöffnet sind. Riley erwägt eine Obergrenze von 4 GiB. Diese Zahlen dienen lediglich als Beispiele und stellen keine Empfehlung zur Dimensionierung von Collabora, keine Leistungsaussage und kein Testergebnis dar. Ihre endgültige Speichergrenze sollte sich aus der beobachteten Auslastung und der Hostkapazität ergeben.
1. Prüfen Sie, ob der Behälter tatsächlich auf den Deckel trifft.
Führen Sie diese Befehle auf dem Docker-Host aus und ersetzen Sie dabei ` collabora<containername>` durch den tatsächlichen Containernamen:
docker statsZeigt die aktuelle Nutzung und das Containerlimit an. Die Ausgabe von `inspect` gibt das konfigurierte Speicherlimit in Bytes an und ob Docker den Container als aufgrund von Speichermangel (OOM) beendet protokolliert. Ein Wert von 0 0bedeutet, dass Docker kein explizites Limit für diesen Container festgelegt hat; dies bedeutet nicht, dass der Rechner über unbegrenzten Arbeitsspeicher verfügt. Ein hoher Wert allein beweist keinen Speichermangel. Vergleichen Sie ihn daher mit dem Neustartverlauf, den Protokollen und den Zeitpunkten, zu denen Benutzer Fehler festgestellt haben.
Hypothetisches Diagnosebeispiel: Der CODE-Container nähert sich seiner konfigurierten Obergrenze von 2 GiB.
Bevor Sie das Limit erhöhen, prüfen Sie, wie viel RAM für das Betriebssystem und andere Dienste noch verfügbar ist. Docker empfiehlt, den Anwendungsbedarf zu testen und Container auf Hosts mit ausreichenden Ressourcen auszuführen. Prüfen Sie bei Docker Desktop zusätzlich unter Einstellungen > Ressourcen : Der der Docker-VM zugewiesene Speicher ist ein separates Limit, das von allen Containern gemeinsam genutzt wird. Eine Erhöhung des Limits von CODE über diese Zuweisung hinaus schafft keinen zusätzlichen physischen Speicher; siehe die Ressourceneinstellungen von Docker Desktop .
2. Ändern Sie das Compose-Dienstlimit.
Bearbeiten Sie den vorhandenen CODE-Dienst in Ihrer Compose-Datei. Behalten Sie das aktuelle Image-Tag, die Ports, die Umgebung, die Volumes, die Netzwerke und die Neustartrichtlinie bei; fügen Sie lediglich die Speichereinstellung hinzu oder aktualisieren Sie diese. Für Rileys hypothetisches 4-GiB-Beispiel:
Compose-Beispiel: Festlegen der Speicherbegrenzung auf Dienstebene unter Beibehaltung des bereitgestellten CODE-Image-Tags.
Dieses Beispiel verwendet das offizielle CODE-Docker-Image von Collabora . Behalten Sie das bereits von Ihrer Bereitstellung verwendete Tag bei. mem_limitEs handelt sich um eine feste Obergrenze, nicht um eine Reservierung: Docker erlaubt dem Container, bis zu dieser Menge an Arbeitsspeicher zu verwenden, aber die Einstellung reserviert nicht so viel RAM auf dem Host. Die Docker Compose-Dienstreferenz definiert mem_limitdiese Obergrenze und besagt, dass sie mit der vorherigen übereinstimmen muss, deploy.resources.limits.memorywenn beide vorhanden sind. Wenn Ihre Bereitstellung einen Orchestrator oder eine plattformverwaltete Compose-Datei verwendet, nutzen Sie das unterstützte Ressourcenfeld dieser Plattform und achten Sie darauf, dass doppelte Grenzwerte konsistent sind.
Wenn Sie CODE direkt mit `docker run` gestartet haben docker run, erstellen Sie es mit dem ursprünglichen Befehl neu --memory=4gund behalten Sie alle aktuellen Optionen bei. Für schnelle Laufzeitänderungen an einem bestehenden Linux-Container unterstützt Docker auch `docker run` docker update --memory 4g <container_name>. Behandeln Sie die Compose-Datei oder den ursprünglichen Startbefehl als maßgebliche Quelle, damit eine spätere Aktualisierung die alte Konfiguration nicht wiederherstellt. Weitere Informationen finden Sie in der Docker-Container-Update-Referenz .
3. Erstellen Sie den Code neu, damit das gespeicherte Limit wirksam wird.
Überprüfen Sie im Verzeichnis, das die aktive Compose-Datei enthält, die zusammengeführte Konfiguration und erstellen Sie anschließend nur den CODE-Dienst neu:
docker compose config
docker compose up -d --no-deps --force-recreate collabora
Verwenden Sie den Dienstschlüssel aus Ihrer Datei anstelle von collabora. Überprüfen Sie die gerenderte Konfiguration auf das neue Limit, bevor Sie es anwenden. Das Neuerstellen von CODE unterbricht Bearbeitungssitzungen, die von diesem Container abhängen, kurzzeitig. Planen Sie die Änderung daher so, dass eine kurze Dienstunterbrechung akzeptabel ist. Entfernen Sie keine Volumes und führen Sie nicht aus docker compose down -v; diese Operationen sind für eine Änderung des Speicherlimits unnötig und können persistente Daten anderer Dienste löschen.
Wenden Sie die bearbeitete Compose-Konfiguration an und erstellen Sie nur den CODE-Dienst neu.
4. Überprüfen Sie die neue Kappe und prüfen Sie das Verhalten unter Last.
Nachdem der Dienst zurückgekehrt ist, überprüfen Sie den tatsächlichen Container – nicht nur die YAML-Datei:
Für den Beispielwert 4gsollte die Ausgabe von `inspect` etwa 4 GiB in Bytes darstellen und docker statsein Limit nahe 4 GiB anzeigen. Die Abbildung unten zeigt eine Beispielausgabe, die nur zur Veranschaulichung dient. Beobachten Sie anschließend den Code beim Öffnen der Dokumenttypen und die ungefähre Anzahl gleichzeitiger Sitzungen, die für Ihre Bereitstellung relevant sind. Stellen Sie sicher, dass der Container weiterhin ausgeführt wird, keine für Benutzer sichtbaren Fehler mehr auftreten und der Host genügend Speicher für seine anderen Prozesse freihält.
Erwartetes Verifizierungsmuster für die fiktive 4-GiB-Konfiguration; die angezeigten Werte sind eine Beispielausgabe, keine gemessene Bereitstellung.
Wenn das Problem weiterhin besteht
Wenn die neue Speicherbegrenzung vorhanden ist, CODE aber weiterhin neu startet, überprüfen Sie docker inspectden Status docker logs, die Kernel- oder Docker-Ereignisse des Hosts auf einen Speichermangel. Bleibt der Container fehlerfrei, löst die Dokumentenverarbeitung aber weiterhin Aufräumarbeiten aus, ist Docker möglicherweise nicht der aktive Flaschenhals. coolwsdDie Speicherverwaltung von Collabora ist unabhängig von der Docker-Cgroup-Beschränkung; die serverseitigen Steuerungseinstellungen sind in der Projektkonfigurationsvorlage dokumentiert. Überprüfen Sie die Konfiguration Ihrer installierten CODE-Version, bevor Sie Änderungen vornehmen .
Beheben Sie Unsicherheiten nicht, indem Sie dem Container unbegrenzten Speicher zuweisen oder den Speicherkiller deaktivieren. Docker warnt davor, dass ein unbegrenzter Container zur Erschöpfung des Hostspeichers beitragen und andere Dienste beeinträchtigen kann. Wenn der Host keinen Sicherheitsspielraum mehr hat, besteht die Lösung darin, die Kapazität des Hosts oder der Docker-VM zu erhöhen, die gleichzeitige Arbeitslast zu reduzieren oder die Aufgaben zu verteilen – und nicht darin, die Speichergrenze über den verfügbaren RAM hinaus zu erhöhen.