服务运行及异常退出处理
初步断定为 启动服务时,自定义了内存配置(-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号