服務運行及異常退出處理
初步斷定為 啟動服務時,自定義了內存配置(-XX:MetaspaceSize=512m -XX:NewSize=1024m -XX:OldSize=2048m ...),導致服務運行一段時間,內存判斷有誤,自動關閉服務,待驗證
初步驗證:java -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC -XX:+PrintClassHistogramBeforeFullGC -XX:+PrintClassHistogramAfterFullGC -Xloggc:./gc.log 問題依然存在
java -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC -Xloggc:./gc.log 問題依然存在
java -XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC -Xloggc:./gc.log 問題依然存在
java -XX:+PrintHeapAtGC -Xloggc:./gc.log 問題依然存在
去掉 -Xloggc:./gc.log似乎就沒有問題了
增加了個disown -h pid 似乎都沒有問題了
為什么回到初步驗證時,也沒有問題了
內存日志:
-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/data/heapdumps # 內存溢出時生成堆轉儲
-XX:+CrashOnOutOfMemoryError # 內存溢出時強制生成Core Dump(需系統允許)
解決方案:
自啟動方式:
若服務未注冊:
創建服務文件:以 root 權限在 /etc/systemd/system/ 目錄下創建一個 .service 文件,例如 fisherycube-backend.service ,內容示例如下:
創建文件:
sudo touch /etc/systemd/system/fisherycube-backend.service
[Unit]
Description=fisherycube-backend service
After=network.target
[Service]
ExecStart=/usr/bin/java -jar /workspaces/work/fisherycube-backend/jeecg-boot-module-system-2.4.5.jar --spring.config.location=file:/workspaces/work/fisherycube-backend/application.yml &
WorkingDirectory=/workspaces/work/fisherycube-backend
Restart=always
[Install]
WantedBy=multi-user.target
上述配置中,ExecStart 指定了啟動 jar 包的命令,WorkingDirectory 設置了工作目錄,Restart=always 表示服務異常終止時自動重啟 。
重載服務配置并啟動服務:執行 sudo systemctl daemon-reload 重載服務配置,然后執行 sudo systemctl start fisherycube-backend.service 啟動服務,之后就可以用 journalctl -u fisherycube-backend.service 查看日志 。

浙公網安備 33010602011771號