springboot 启动的 Java 进程默默终止,如何检查出原因?

2017-10-23 18:25:11 +08:00
 esolve

springboot 启动的 java 进程,运行在 linux 下,不知不觉的默默终止

ps 的时候突然发现看不到了

日志用的 debug 等级,看不出问题在哪

如何排查?

3400 次点击
所在节点    问与答
18 条回复
zhaohui318
2017-10-23 18:38:05 +08:00
springboot 那个版本?用的什么容器? tomcat ?
jalja27
2017-10-23 18:43:34 +08:00
运行一段时间才中止的? jmx 能看出 jvm 的运行情况,也有可能 jdk 版本问题,很可能不是 java 层面的问题,要 linux 运维处理了
esolve
2017-10-23 18:44:29 +08:00
@zhaohui318 tomcat
1.5.2
tomcat
esolve
2017-10-23 18:45:38 +08:00
@jalja27 jdk 版本没问题啊

linux 下如何排查进程问题?
sagaxu
2017-10-23 18:52:42 +08:00
先查一下 syslog,看看有没有诸如 OOM 这类蛛丝马迹,我记得你发过内存占用高的帖子
生成 core 文件也要打开,以防某些用了 JNI 的库写内存写飞掉了,gclog 也要打开
然后还要排查一下有没有什么定时脚本不留神 kill 掉了它
代码里面也要排查一下有没有主动 exit 的地方
启动之后也要测试一下功能,看看是不是没启动起来就挂了
排查不出来,部署到独立的 tomcat 里试试,那里 log 会更详细一些
esolve
2017-10-23 18:57:03 +08:00
@sagaxu 是 OOM 杀了进程,晕
OOM 杀了进程,只在系统日志里标明吗?
java 项目自身的日志为何没有迹象?
另外,如何找到 OOM 的具体原因啊?
xmh51
2017-10-23 18:58:38 +08:00
查看是否是内存不足。
xmh51
2017-10-23 19:00:18 +08:00
@esolve linux 有内存管理的。内存不足时,会按策略杀进程。
sagaxu
2017-10-23 19:03:06 +08:00
@esolve JVM 自己并不知道自己被 OOM Killer 杀掉了,因为 OOM 是强制性的,不带商量的
发生 OOM,可能是数据量真的很大,需要那么大内存,也有可能是代码里有内存泄露,具体业务具体分析
esolve
2017-10-23 19:05:31 +08:00
@sagaxu 我的意思是,如何得知“发生 OOM 时,该占用了多少内存“
esolve
2017-10-23 19:05:45 +08:00
@sagaxu 我的意思是,如何得知“发生 OOM 时,该进程占用了多少内存“
misaka19000
2017-10-23 19:09:01 +08:00
@esolve 对进程做个监控就行了吧
sagaxu
2017-10-23 19:33:19 +08:00
@esolve 打开 gclog,可以看到内存信息,或者写个脚本每隔 100 毫秒记录一下内存占用
ipeony
2017-10-23 20:10:05 +08:00
启动的时候加 oom dump 参数
jalja27
2017-10-23 21:17:54 +08:00
@esolve 为什么会 kill 掉 java ?服务器上部署多个服务?还是 Vps 这种?正常来说 Jvm 参数可以设置内存大小,没必要通过操作系统或者母鸡策略 kill 掉 java 进程。如果是 Vps 这种但是正常的
esolve
2017-10-23 22:47:57 +08:00
@jalja27 母鸡策略? 不是 vps,是内部的一台测试机器
timi
2017-10-24 10:41:58 +08:00
启动的时候加 HeapDumpOnOutOfMemoryError 参数,然后挂掉的时候会有 OOM 文件,至今遇到两次挂基本都是 OOM (还有一次被我们测试 kill 了,定位了好久)
jack80342
2017-11-21 23:14:14 +08:00
这几天翻译了 Spring Boot 最新的官方文档,欢迎👏fork,https://www.gitbook.com/book/jack80342/spring-boot/details

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/400006

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX