У нас есть кластер серверов tomcat, только что обновленных до debian7 / openjdk7 / tomcat7 (все из стандартного debian). Теперь у нас было два сбоя JVM на разных машинах. Оба сервера имеют одинаковое оборудование и точно настроены (кроме IP-адресов, конечно).
Первый сбой:
#
# A fatal error has been detected by the Java Runtime Environment:
#
# SIGSEGV (0xb) at pc=0x00007fd0b582123a, pid=6542, tid=140533723084544
#
# JRE version: 7.0_25-b30
# Java VM: OpenJDK 64-Bit Server VM (23.7-b01 mixed mode linux-amd64 compressed oops)
# Problematic frame:
# V [libjvm.so+0x62623a] LinkResolver::runtime_resolve_interface_method(CallInfo&, methodHandle, KlassHandle, Handle, KlassHandle, bool, Thread*)+0x5a
#
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#
# If you would like to submit a bug report, please include
# instructions on how to reproduce the bug and visit:
# http://icedtea.classpath.org/bugzilla
#
--------------- T H R E A D ---------------
Current thread (0x00007fd0948b0800): JavaThread "catalina30" daemon [_thread_in_vm, id=6670, stack(0x00007fd08e94b000,0x00007fd08ea4c000)]
siginfo:si_signo=SIGSEGV: si_errno=0, si_code=1 (SEGV_MAPERR), si_addr=0x0000000000000000
Вторая авария:
#
# A fatal error has been detected by the Java Runtime Environment:
#
# SIGSEGV (0xb) at pc=0x00007f0a3a22421d, pid=3454, tid=139681826494208
#
# JRE version: 7.0_25-b30
# Java VM: OpenJDK 64-Bit Server VM (23.7-b01 mixed mode linux-amd64 compressed oops)
# Problematic frame:
# V [libjvm.so+0x71021d] ParRootScanWithBarrierTwoGensClosure::do_oop(unsigned int*)+0x6d
#
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#
# If you would like to submit a bug report, please include
# instructions on how to reproduce the bug and visit:
# http://icedtea.classpath.org/bugzilla
#
--------------- T H R E A D ---------------
Current thread (0x000000000088c000): GCTaskThread [stack: 0x0000000000000000,0x0000000000000000] [id=3781]
siginfo:si_signo=SIGSEGV: si_errno=0, si_code=1 (SEGV_MAPERR), si_addr=0x0000000000000018
Раньше у нас никогда не было сбоев JVM.
Я действительно не знаю, с чего начать. Это похоже на аппаратную неисправность? Ошибка JDK? Ошибка Tomcat?
Какова наиболее вероятная причина этого?
Были проблемы с моей оперативной памятью. У нас на серверах новая оперативная память, и теперь все работает. Впоследствии я протестировал как OracleJDK, так и OpenJDK, и я не вижу никаких различий в производительности или функциональности. Единственное, чего не хватает в Oracle JDK, - это полной криптографии. Так что с этого момента я предпочитаю OpenJDK.