본문 바로가기
반응형

 

업데이트 및 정기배포의 경우 WEB-INF/lib 아래 jar 파일을 교체하는 경우가 생기는데

보통은 jar 파일 교체 후 서버 재기동을 한다. (배포를 해야해서)

 

그러나 우선 배포 후 어떤 이유로 인해 재기동을 미룰때가 있는데 이 경우 아래와 같이 core dump 가 떨어지며 서버가 죽어버릴 수 있다.

 

# A fatal error has been detected by the Java Runtime Environment:
#
# SIGSEGV (0xb) at pc=0xffffffff7ea8241c, pid=<PID>, tid=<TID>
#
# JRE version: Java(TM) SE Runtime Environment (8.0_112-b15) (build 1.8.0_112-b15)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.112-b15 mixed mode solaris-sparc compressed oops)
# Problematic frame:
# C [libc.so.1+0x18241c] memcpy%sun4v-hwcap3+0x968
#
...

# A fatal error has been detected by the Java Runtime Environment:
#
# SIGBUS (0x7) at pc=0x00007f34165d4d10, pid=<PID>, tid=<TID>
#
# JRE version: Java(TM) SE Runtime Environment (8.0_201-b09) (build 1.8.0_201-b09)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (25.201-b09 mixed mode linux-amd64 compressed oops)
# Problematic frame:
# C [libzip.so+0x11d10] newEntry.isra.4+0x60
...

 

이 이유는 lib 아래 jar 파일이 수정되면, JVM 의 사본과 디스크(로컬)의 jar가 일치하지 않아서 충돌이 발생하는 JDK 8버그이다.

 

해결방안

1) 기동 중에는 jar파일을 수정하지않거나, 수정 후 바로 재기동

2) JDK 11이상으로 업그레이드

3) 아래의 JVM 옵션 추가

-Dsun.zip.disableMemoryMapping=true
728x90
반응형

한걸음 한걸음

개인적인 기록