원인 파악

2주 전까지 정상적으로 서비스 중이던 페이지가 갑자기 500 에러를 출력시켰다.

분명 변경 사항도 없었고 데이터 조회하는 페이지라서 데이터를 많이 조회하나..? 싶어서

데이터 건 수를 확인했더니 겨우 157건 데이터 조회하고 있었음.

부랴부랴 운영서버 들어가서 로그를 확인하니 아래와 같았다.

nov 15, 2023 1:40:24 pm
org.apache.catalina.core.standardwrappervalve invoke severe: 
servlet.service() for servlet [jsp] in context with path [] threw exception 
[javax.servlet.servletexception: java.lang.outofmemoryerror: java heap space] with root cause 
java.lang.outofmemoryerror: java heap space

heap 영역의 공간이 부족해져서 발생한 오류로 확인되었고, 힙 영역의 공간을 늘려주면 해결 가능하다고 한다.

아래 명령어를 통해 현재 톰캣의 메모리 값을 확인해 보았다.

ps -ef | grep tomcat

# -Xms2g  -Xmx2g

MAX 메모리가 2g로 되어 있었다.

해결 방안

가용 메모리가 많이 남아있어서 톰캣 MAX 메모리 값을 2g → 4g로 변경하는 것으로 결정되었다.

#경로: tomcat/bin/catalina.sh

vi catalina.sh


# vi를 통해 확인해보면 JAVA_OPTS 설정값이 보인다.
# 해당 설정 값을 -Xms2g -Xms2g → -Xms4g -Xms4g로 변경해주자.

JAVA_OPTS="-Xms4g -Xms4g"

위와 같이 톰캣 메모리 설정을 변경한 뒤에 톰캣 서비스를 재시작해준다.

 

결론

해당 톰캣으로 여러 서비스를 물려 놓아서 위와 같은 문제가 발생한 것으로 가장 유력하다.

추후 위와 같은 현상이 발생하지 않도록 구비가 필요하다.

또한 추가해준 메모리값은 과도한 자원 낭비를 줄이기 위하여 4g로 늘린 것이므로 사용중인 서버의 가용 자원을 확인하여 적절하게 수정해주면 된다.


반응형