场景:有一个单独的服务,用于测试一个大的定时任务(包含大量读写操作),定时任务运行大概 30 分钟后,会出现卡死情况。Java 进程还存在但处于暂停状态。日志停止输出,且没有任何报错。
进程信息: PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 8831 **** 20 0 9781344 2.491g 14912 t 0.0 8.0 23:50.15 java
gc 部分日志: 2021-11-24T09:43:51.293+0800: 58343.178: [GC (Allocation Failure) [PSYoungGen: 1045888K->416K(1047552K)] 1379025K->333593K(2096128K), 0.0061813 secs] [Times: user=0.02 sys=0.01, real=0.01 secs] 2021-11-24T09:44:37.862+0800: 58389.746: [GC (Allocation Failure) [PSYoungGen: 1046944K->288K(1047552K)] 1380121K->333473K(2096128K), 0.0063377 secs] [Times: user=0.01 sys=0.00, real=0.01 secs] 2021-11-24T09:45:23.641+0800: 58435.526: [GC (Allocation Failure) [PSYoungGen: 1046816K->387K(1047552K)] 1380001K->333597K(2096128K), 0.0063043 secs] [Times: user=0.02 sys=0.00, real=0.01 secs]
卡死后,jmap,jstack 相关指令都无法再执行了。 数据库用的是 oracle 12c,查看还是正常的,所以应该不是数据库的问题。 请问大佬们,现在有啥排查问题的手段吗?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.