Wie kann man herausfinden, was einen Prozess tötet?

1

Ich habe einen Minecraft-Server in einem VPS und manchmal wird mein Server unerwartet beendet.

Ich glaube nicht, dass dies ein Java-Fehler ist, da kein Fehler ausgegeben wird und dies geschieht, wenn der Server ordnungsgemäß ausgeführt wird. Außerdem wird in meinem Skript eine Meldung angezeigt, in der der Java-Befehl aufgerufen wird, der besagt, dass der Prozess beendet wurde, und auch die Prozess-ID und die Zeile im SH-Skript, die getötet wurde:

Mein Drehbuch:

#!/bin/sh
cd /home/minecraft/server
FILE=mcpc-plus-legacy-1.4.7-R1.1-SNAPSHOT-f534-L31.jar
#LOG="log`date +'%Y-%m-%d.%H:%M:%S'`.log"
while :
do
LOG="log`date +'%Y-%m-%d.%H:%M:%S'`.log"
echo "Iniciando..." >> "$LOG"
rm log-latest.log
ln -s "$LOG" log-latest.log
java -Xmx7680M -Xms4096M -XX:MaxPermSize=192M  -jar "$FILE" 2>> "$LOG"
#-Dcom.sun.management.jmxremote \
#-Dcom.sun.management.jmxremote.port=9010 \
#-Dcom.sun.management.jmxremote.local.only=false \
#-Dcom.sun.management.jmxremote.authenticate=false \
#-Dcom.sun.management.jmxremote.ssl=false \
# -jar "$FILE" >> "$LOG.std.txt"  2>> "$LOG"

echo "Aperte CTRL + C para cancelar"
sleep 5

done

Die Meldung, die angezeigt wird, wenn der Prozess beendet wird:

/home/minecraft/server/acao_iniciar.sh: line 22: 23546 Killed java -Xmx7680M -Xms4096M -XX:MaxPermSize=192M -jar "$FILE" 2>> "$LOG"

Es ist kein Cronjob konfiguriert und der lastBefehl zeigt keine merkwürdige Verbindung über SSH an.

José Roberto Araújo Júnior
quelle
3
Ist auf dem Server nicht genügend Arbeitsspeicher verfügbar? Es könnte vom OOM-Mörder getötet werden .
Terdon
@terdon das ist eigentlich eine Möglichkeit, der VPS hat 8 GB RAM und läuft auch MySQL und einige kleine Dienste im Zusammenhang mit Plesk, ich wusste nicht, dass andere Prozesse auf diese Weise getötet werden könnten
José Roberto Araújo Júnior
@terdon Ich habe Xmxauf 7168M gesenkt , das gleiche hat 7GB und ich teste jetzt
José Roberto Araújo Júnior
@terdon danach hatte ich nie mehr dieses problem, warum beantwortest du die frage nicht damit ich deine antwort auswählen kann hat die beste antwort
José Roberto Araújo Júnior

Antworten:

1

Ein möglicher Grund ist, dass auf Ihrem Server nicht mehr genügend Arbeitsspeicher zur Verfügung steht und der Prozess vom OOM-Killer abgebrochen wird . Dies ist ein Mechanismus in Linux, der Prozesse mit niedriger Priorität beendet, wenn auf dem System nicht genügend Arbeitsspeicher verfügbar ist.

In diesem Fall sollten Sie in der Lage sein, das Problem zu beheben, indem Sie i) den für Ihren Java-Prozess zulässigen Arbeitsspeicher verringern, ii) die Priorität des Prozesses erhöhen ( nice -15) oder iii) den verfügbaren Arbeitsspeicher erhöhen.

terdon
quelle