提问人:manjosh 提问时间:10/20/2023 最后编辑:manjosh 更新时间:10/30/2023 访问量:82
Springboot 3应用程序崩溃,在日志中没有任何异常打印
Springboot 3 application crashes without any exception print in the logs
问:
我们使用 JDK 17 将 springboot 应用程序迁移到 springboot 3。 我们看到应用程序崩溃,日志中没有任何错误。
如果有一些例外,我认为会在 linux 上创建一些核心转储和hs_err文件。我们没有看到创建的任何文件。OutOfMemory
我们有一个脚本,如果它发现应用程序没有运行,它会启动它。因此,现在应用程序正在不断重新启动,没有任何错误。
我们只看到以下日志
2023-10-20 12:38:38,043 ERROR c.m.c.v.s.i.SubscriberQueryRequestHandler [Scheduler-task-12] subQueryLst.size():0
2023-10-20 12:38:44,104 INFO o.s.b.StartupInfoLogger [main] Starting Application v0.0.1 using Java 17.0.8 with PID 58021 (/opt/dist/WebController/cms-service-0.0.1.war started by cms in /)
2023-10-20 12:38:44,114 DEBUG o.s.b.StartupInfoLogger [main] Running with Spring Boot v3.1.4, Spring v6.0.12
2023-10-20 12:38:44,115 INFO o.s.b.SpringApplication [main] No active profile set, falling back to 1 default profile: "default"
2023-10-20 12:38:49,470 DEBUG c.m.c.v.u.LoggingAspect [main] com.mavenir.cms.JasyptEncryptionConfig$$SpringCGLIB$$0|Entered method : passwordEncryptor
2023-10-20 12:38:49,470 DEBUG c.m.c.v.u.LoggingAspect [main] com.mavenir.cms.JasyptEncryptionConfig$$SpringCGLIB$$0|passwordEncryptor arguments are : []
我们在启动应用程序时添加了这个 jvm 参数,但它没有创建任何转储文件。-XX:+HeapDumpOnOutOfMemoryError
当我运行命令时,我看到 CPU 飙升到 +
请帮忙
在我看到下面的日志中,这是什么意思?top
300%
/var/log/messages
Oct 23 07:00:34 CMSNFV-P_9_0_14_A kernel: oom-kill:constraint=CONSTRAINT_NONE,nodemask=(null),cpuset=/,mems_allowed=0-1,global_oom,task_memcg=/system.slice/psmon.service,task=java,pid=34091,uid=1006
Oct 23 07:00:34 CMSNFV-P_9_0_14_A kernel: Out of memory: Killed process 34091 (java) total-vm:315588020kB, anon-rss:570068kB, file-rss:0kB, shmem-rss:4624624kB, UID:1006 pgtables:13160kB oom_score_adj:0
答:
0赞
Antonio Petricca
10/20/2023
#1
您的问题有点难以诊断。
如果偶然遇到崩溃,可以启用 OS 核心转储支持,如下所示:
# Become root...
ulimit -c unlimited
echo "/root/core-dumps" > /proc/sys/kernel/core_pattern
# Restart the application (as NON root) and wait for crashing, then...
java -jar <your-war-file>
gdb /usr/bin/java /root/core-dumps/dump-file
如果此解决方案不起作用,它可能只是一个意外的应用程序退出,因此您可以通过以下方式发现它在退出事件中执行的操作:
strace -o my-app-trace.log java -jar <your-war-file>
评论
0赞
manjosh
10/21/2023
这是剧本吗?我应该用这个脚本开始我的应用程序吗?
0赞
Antonio Petricca
10/21/2023
它们是命令,而不是脚本。
0赞
manjosh
10/21/2023
我的springboot应用程序是一个war文件,我应该运行吗?这不起作用,我收到错误gdb cms-service-0.0.1.war /root/core-dumps/dump-file
cms-service-0.0.1.war": not in executable format: File format not recognized
0赞
Antonio Petricca
10/21/2023
我编辑帖子是为了更清晰......
0赞
manjosh
10/26/2023
我认为这是一些与内存相关的问题,在/var/log/messages中,我看到了一些OOM问题。
0赞
manjosh
10/30/2023
#2
我在 java 参数中使用 ZGC,ZGC 收集器使用大量内存。由于这个 Linux 中的内存不足杀手正在扼杀 java 进程。我用 ParallelGC 替换了 ZGC,它工作正常。
Java ZGC 垃圾回收器使用大量内存这篇文章对 ZGc 进行了一些阐述。
评论