2017-06-06 1 views
2

Bitte helfen Sie eine geeignete Lösung zu finden.Passen Sie OOM Killer für Subprozess in Docker Container

Es gibt einen Java-Dienst, der in der Ubuntu-Umgebung ausgeführt wird und regelmäßig einen externen Prozess mit Parametern (mehrere Instanzen desselben Programms) aufruft. Alles ist in einen Docker-Container gepackt (Speicherlimit ist gesetzt, unprivilegiert, nur lesbar außer tmp und logs, cap_drop all). Manchmal überfüllen die Daten, die dem Unterprozess zugeführt werden, das Speicherlimit. In diesem Fall möchten wir die Subprozesse aufgrund von OOM abbrechen, lassen aber den Elternprozess (java) laufen.

Wenn Sie über das System non-docker sprechen, gibt es eine Reihe von Methoden, um dies zu erreichen: Erstellen einer benutzerdefinierten Kontrollgruppe, Festlegen des Speicherlimits und Anhängen von Unterprozessen. Eine andere Möglichkeit besteht darin, die Einstellung/proc/PID/oom_adj so anzupassen, dass Teilprozesse mit einem größeren oom_score erstellt werden.

Aber in Docker-Container kann ich keine Möglichkeit finden, es auf einfache Weise zu tun, ohne Container im privilegierten Modus auszuführen und externe Wrapper zum Hauptprozess hinzufügen.

Gibt es eine native Möglichkeit, Speichercgroup in Container hinzuzufügen oder OOM Killer anzupassen?

Vielen Dank im Voraus!

Antwort