Pod自动重启困难排查:JDK 17 EA版本G1GC Bug导致的应用崩溃

Pod自动重启问题排查:JDK 17 EA版本G1GC Bug导致的应用崩溃

问题背景

在生产环境中,我们遇到了一个严重的稳定性问题:应用Pod频繁自动重启,导致服务不稳定。通过深入分析JVM崩溃日志,最终定位到是JDK 17 EA版本中G1GC的一个已知Bug导致的。

问题现象

1. Pod重启表现

  • 应用Pod在运行一段时间后突然崩溃
  • Kubernetes自动重启Pod,但问题会重复出现
  • 服务可用性受到严重影响

2. JVM崩溃日志分析

# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x00007f5be7327043, pid=1, tid=52
#
# JRE version: OpenJDK Runtime Environment (17.0+14) (build 17-ea+14)
# Java VM: OpenJDK 64-Bit Server VM (17-ea+14, mixed mode, sharing, tiered, compressed oops, compressed class ptrs, g1 gc, linux-amd64)
# Problematic frame:
# V  [libjvm.so+0x707043]  G1ParCopyClosure::do_oop(narrowOop*)+0x63

关键信息提取:

  • JVM版本: OpenJDK 17.0+14 (build 17-ea+14) - 这是一个Early Access版本
  • GC类型: G1GC (G1 Garbage Collector)
  • 崩溃位置: G1ParCopyClosure在do_oop方法中发生段错误
  • 崩溃线程: GC Thread#1,说明问题出现在垃圾回收过程中

3. 堆栈跟踪分析

从堆栈跟踪可以看出,崩溃发生在G1GC的并行复制阶段:

V  [libjvm.so+0x707043]  G1ParCopyClosure::do_oop(narrowOop*)+0x63
V  [libjvm.so+0xb6f6c3]  OopMapSet::oops_do(frame const*, RegisterMap const*, OopClosure*, DerivedPointerIt
posted @ 2025-09-19 11:48  yxysuanfa  阅读(6)  评论(0)    收藏  举报