服务运行及异常退出处理

初步断定为 启动服务时,自定义了内存配置(-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 查看日志 。

posted @ 2025-06-03 10:28  江湖一支竹  阅读(10)  评论(0)    收藏  举报