[JBoss] 자바 메모리 누수

전형빈·2023년 1월 18일
0

Linux

목록 보기
5/5
post-thumbnail

JBoss를 사용중인 서버에서 메모리 이슈로 인한 장애로 서버가 죽었을 때 해결했던 과정

하루에 웹 서비스에 장애가 2번인나 발생했다.

Jboss를 재기동하니 정상으로 돌아와서 무심코 넘겼는데, 2시간 후 동일한 증상이 발생하여 Jboss 로그를 확인해보니

exception is java.lang.OutOfMemoryError: Java heap space

OOM이 발생한걸 확인하고 해당 부분에 문제가 발생하지 않게 조치했던 과정을 정리해 보았다.


보통 OOM은 heap size 부족으로 발생한다.

  1. App에서 요구하는 메모리가 was에 할당된 메모보다 클 경우

  2. Memory leak

  3. 특정 작업으로 대량의 메모리 사용


위같은 경우에 발생할 수 있는데 OOM이 발생하면 메모리 정리를 위해 GC를 하게 되고 이때 was는 모든 작업을 정지한다.

해당 서버는 GC가 자주 발생하여 cpu 사용량이 증가하여 was에 접근하지 못해 발생한 장애였다.

결과적으로 JBoss의 Java Heap Memory 사이즈를 기존 1G에서 4G로 증설시켜 해결할 수 있었다.


JBoss는 env.sh 라는 파일이 있는데 해당 파일에서 heap memory size를 변경할 수 있다.

export JAVA_OPTS=" $JAVA_OPTS -Xms4096m -Xmx4096m -XX:MetaspaceSize=1024m "

위처럼 기존 1G 였던걸 4G로 변경 후 JBoss를 재기동만 해주면 된다. (상황에 따라 조정)

JBoss뿐 아니라 다른 자바 기반의 웹 애플리케이션 모두 위와 같은 방법으로 해결할 수 있다.

0개의 댓글