Prozesse werden gekilled

NicoDeluxe

New Member
Hallo zusammen. BEi unserem managed root werden Prozesse die über 400 CPU kommen gekilled. Wir haben wichtige Java Programme die nach einer weile abgebrochen werden.

Was können wir unternehmen um Java zu zügeln? Wäre cpulimit -e Java -l 350 korrekt? Oder lieber mit nice die Priorität ändern? Da hab ich aber keine Ahnung über sie syntax. Kann mir bitte jemand helfen?
 
Es kann mehrere Gründe geben warum Programme gekillt werden. Dazu gehören :
- Java-interne Probleme wie Heapspace (RAM) Überschreitung
- Kernel OOM-Kill durch Erreichen von Systemram
- Applikationsabsturz durch Ressourcenbegrenzung (Container oder Cgroup)
- Monitoring-basierter Kill durch Ressourcenüberschreitung

Fall 1 kann durch entsprechende Abänderung der Startparameter der Applikation generell leicht behoben werden, und hat nur mit RAM Zuteilung zu tun, nicht CPU.

Fall 2 bedeutet dass dein System keinen Ram mehr hat und hat nichts mit CPU-Benutzung zu tun. Hier muss entsprechend mehr RAM (frei)gestellt werden oder die Applikation gezügelt.

Fall 3 ist vermutlich ein Openvz vServer ( /proc/user_beancounters ) da Cgroup-Limitierungen generell nicht standardmässig exisieren.

Fall 4 wäre ein Tool welches die Ressourcenauslastung deines Servers verwaltet und bei Programmen welche nicht whitelisted sind bei hoher Belastung einfach mal ein Kill ausführt. "Spezialisten" welche solche Programme standardmässig mitführen sind bspw Webhosting-Umgebungen wie cPanel.

Wichtig: ein Linuxsystem killt standardmässig NICHT nach CPU-Belastung sondern nur bei RAM-Überschreitung! Bitte also im Hinterkopf behalten dass die Analyse dass bei CPU-400 gekillt wird vermutlich falsch ist!
 
Hi danke für deine tolle Antwort!

Heap, könnte es sein. Als Init sind (xms) sind 2GB vergeben und max (xmx) 6GB. Wr haben 64GB auf dem Server, dass sollte kein Problem sein?!

Ist ein Root dedicated. Wenn mein Programm läuft und ich den Server belaste, langweilen sich der RAM und CPU wenn ich das mit htop beobachte. Kannst du mir sagen was ich evtl. noch zur RAM Überschreitung checken kann? In den JVM Optionen sind ja nun minimal 6GB
 
Schaut mal auf eurem Server, welche Java-Version installiert ist. Eventuell ist durch einen dummen Zufall die 32 Bit Version installiert.

Sinnvoll ist auch, wenn die Java-Version bis auf die letzte Stelle der Versionsnummer identisch mit der auf dem Entwicklersystem ist, um damit Seiteneffekte schon mal auszuschließen.

Sind die Versionen identisch, so probiert mal mit xms = 3GB oder höher das Programm zu starten.

Sollte es auch damit nicht funktionieren, so bittet euren Provider mal darum, das CPU-Limmit testweise zu deaktivieren.

Hilft auch das nicht weiter, so stellt doch einfach mal die komplette Fehlermeldung hier rein, die bei Programmstart erzeugt wird. Denn ohne die Fehlermeldung mal gesehen zu haben ist es für Außenstehende extrem schwer, euch effektiv helfen zu können.
 
Hi, werden wir mal testen,starten klappt immer nur wenn unsere Software richtig Fahrt aufnimmt und anfängt dateien zu lesen etc, wird der Prozess gekilled (vom Hoster)

Java ist korrekt die 64:

Java(TM) SE Runtime Environment (build 1.8.0_72-b15)
Java HotSpot(TM) 64-Bit Server VM (build 25.72-b15, mixed mode)

Unser Hoster will mal einen "spezialserver für java" zum testen bereit stellen, mal schauen was da geht
 
Also irgend etwas passt hier nicht ganz.
Auf einem dedizierten Server "killt der Hoster" nicht einfach mal so Software, weil er normalerweise gar keinen Rootzugriff hat.
Oder handelt es sich hier um einen Managedserver?

Und warum sollte dann euer Hoster ein Problem damit haben, wenn ihr die Ressourcen eines dedizierten Servers nutzt?

Von daher, Butter bei die Fische:
1) Ist das wirklich ein dedizierter Server oder handelt es sich um einen vServer?
2) Ist es ein Managedserver oder verwaltet ihr ihn selbst?
 
Die Antwort des Hosters klingt nach meinem Fall 3 - also einem Openvz-basierten vServer. Ich würde wegen mangelnder Abtrennung und resultierenden Problemen wie hier beschrieben _keine_ solchen vServer als Kunde mieten.
 
Um die Ressourcen für alle Nutzer auf einem Host- oder Virt-System gerecht zu verteilen und das System nicht Übergebühr zu belasten, benötigt man als Hoster nicht unbedingt die Virtualisierungstechnologie openvz. Solche Einschränkungen können auch mit Hilfe der Virtualisierungstechnologie KVM oder XEN erreicht werden.

Es ist sogar möglich, vServer auf Basis von openvz so einzurichten, sodass auch ressourcenlastige Java-Programme darauf problemlos laufen.

In der zweiten Antwort von NicoDeluxe wurde schon mitgeteilt, dass es sich um ein dedizierten managed Server handelt.

Warum der Hoster auf solch einem Server die Prozesse limitiert, das frage ich mich natürlich auch?
 
Back
Top