Como descobrir o que está matando um processo?

1

Eu tenho um servidor de minecraft em execução em um VPS e, às vezes, meu servidor está sendo morto inesperadamente.

Eu não acredito que este seja um erro de java porque nenhum erro é lançado e isso acontece quando o servidor está rodando bem, também vejo uma mensagem do meu script que chama o comando java dizendo que o processo foi morto e também diz-me o id do processo e a linha no script sh que foi eliminada:

Meu script:

#!/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

A mensagem exibida quando o processo é eliminado:

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

Não há nenhum cronjob configurado e o comando last não mostra nenhuma conexão estranha por meio do SSH.

    
por José Roberto Araújo Júnior 11.06.2013 / 22:14

1 resposta

1

Um motivo provável é que o servidor está ficando sem memória e o processo está sendo eliminado pelo assassino da OOM . Este é um mecanismo no Linux que mata processos de baixa prioridade quando o sistema está ficando sem memória.

Se este for o caso, você deve ser capaz de corrigi-lo i) reduzindo a quantidade de memória que você permite que seu processo java tome, ii) aumentando a prioridade do processo ( nice -15 ) ou iii) aumentando sua disponibilidade memória.

    
por 22.08.2013 / 13:54