我有一个Kafka Streams应用程序在多个JVM上运行(共5个)以提高吞吐量。它正常运行了一个小时左右,然后,每个JVM开始陆续崩溃,除了最后一个。 是随机崩溃,我的代码中没有异常。当我看了核心转储,它说。
# A fatal error has been detected by the Java Runtime Environment:
#
# SIGSEGV (0xb) at pc=0x00007f939eb57255, pid=9669, tid=0x00007f93883f3700
#
# JRE version: Java(TM) SE Runtime Environment (8.0_131-b11) (build 1.8.0_131-b11)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.131-b11 mixed mode linux-amd64 compressed oops)
# Problematic frame:
# V [libjvm.so+0x5c5255] G1ParScanThreadState::copy_to_survivor_space(InCSetState, oopDesc*, markOopDesc*)+0x45
我无法将这个错误与我的代码关联起来。
根据评论,最好使用Kafka支持的最新Java版本,例如,Java 11(也可以选择使用Scala 2.13)。
另外,你可以把垃圾收集器改成类似CMS的东西,而不是G1GC。