Làm thế nào để khám phá những gì đang giết chết một quá trình?


1

Tôi có một máy chủ minecraft chạy trong VPS và đôi khi máy chủ của tôi bị giết bất ngờ.

Tôi không tin đây là lỗi java vì không có lỗi nào xảy ra và điều này xảy ra khi máy chủ đang chạy tốt, tôi cũng thấy một thông báo từ tập lệnh của mình gọi lệnh java nói rằng quá trình đã bị giết và cũng cho tôi biết process id và dòng trong tập lệnh sh đã bị giết:

Kịch bản của tôi:

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

Thông báo được hiển thị khi quá trình bị hủy:

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

Không có cấu hình cronjob và lastlệnh không hiển thị bất kỳ kết nối lạ nào thông qua SSH.


3
Bạn đang hết bộ nhớ trên máy chủ? Nó có thể bị giết bởi kẻ giết người OOM .
terdon

@terdon thực sự là một khả năng, VPS có 8GB RAM và cũng đang chạy MySQL và một số dịch vụ nhỏ liên quan đến plesk, tôi không biết rằng các quy trình khác có thể bị giết theo cách đó
Jose Roberto Araújo Júnior

@terdon Tôi đã hạ xuống Xmxcòn 7168M, cùng có 7GB và tôi đang thử nghiệm ngay bây giờ
José Roberto Araújo Júnior

@terdon sau đó tôi không bao giờ gặp vấn đề này nữa, tại sao bạn không trả lời câu hỏi để tôi có thể chọn câu trả lời của bạn có câu trả lời tốt nhất?
Jose Roberto Araújo Júnior

Câu trả lời:


1

Một lý do có khả năng là máy chủ của bạn sắp hết bộ nhớ và quá trình này đang bị giết bởi kẻ giết người OOM . Đây là một cơ chế trong Linux sẽ giết các tiến trình ưu tiên thấp khi hệ thống hết bộ nhớ.

Nếu đây là trường hợp, bạn sẽ có thể sửa nó bằng cách i) giảm dung lượng bộ nhớ mà bạn cho phép quá trình java của bạn sử dụng, ii) tăng mức độ ưu tiên của quá trình ( nice -15) hoặc iii) tăng bộ nhớ khả dụng của bạn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.