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 last
Befehl zeigt keine merkwürdige Verbindung über SSH an.
Xmx
auf 7168M gesenkt , das gleiche hat 7GB und ich teste jetztAntworten:
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.quelle