Spring

카페24(절약형) 스프링부트 OutOfMemoryError: Metaspace 오류 해결

곽코딩루카 2023. 9. 6. 15:03
반응형

putty로 연결하여 카페24 톰켓서버 로그를 보았다.. 서버를 킬떄마다 서버가 안켜지는 것이였다. (JPA테이블은 생성되었기에 서버가 잘 동작되는줄 알았음..)

tail -f catalina.log 였나.. 할튼 tail 명령어를 쓰면 카페 24 실시간으로 톰켓 로그를 볼 수 있다. 모르면 그것도 따로 구글링 하시고.

로그내용은 아래와 같았다..

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled. 04-Sep-2023 14:15:38.931 심각 [내아이디-startStop-1] org.apache.catalina.startup.HostConfig.deployWARs WAR 파일들에 대해 멀티 쓰레드 배치 작업들이 완료되기까지 기다리는 중 오류 발생 java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: Metaspace at java.util.concurrent.FutureTask.report(FutureTask.java:122) at java.util.concurrent.FutureTask.get(FutureTask.java:192) at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:820) at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:474)

우선 아래 url의 질문을 보고 해결하였다..
https://okky.kr/questions/347671

 

OKKY - 카페24에서 일반형으로 스프링 돌리시는 분 계신가요?

계속 괜찮다가 갑자기 out of memory가 발생하네요.공부 목적의 사이트라 대규모도 아닌데 jvm 64에서도 버티지 못하네요. java heap 부족인데 스프링에서 초기에 등록하는 싱글톤빈이 잡아먹는 메모리

okky.kr


JVM메모리가 딸려서 스프링이 실행이 안되는 것이였다...
나는 스프링부트+JPA를 사용하였었는데 분명 테이블은 다 생성되는데 마지막 로그에 outofmemory에러가 나면서 서버가 안열렸었다.. 카페 24 자주 묻는 질문을 확인해보니..

JVM 메모리가 부족하여 톰켓이 중지 되었거나 톰켓 구동시 정상구동이 되지 않는 경우

tomcat/logs/catalina.out  톰켓 로그 확인시 아래와 같이 Out of memory 에러가 발생됩니다.

 

java.lang.OutOfMemoryError:

 

해당 오류는 고객님 jvm 메모리 부족으로 발생하는 에러 메시지이며,

JSP 호스팅의 경우 아래와 같이 각 서비스별로 JVM 메모리가 다르게 할당되어 있습니다.

 

[ Tomcat JSP 광호스팅 ]

서비스명 JVM 메모리
절약 64M
일반 64M
비즈니스 128M
퍼스트클래스 128M
자이언트 256M

 

해결방법은 불필요한 라이브러리 파일 삭제, 소스코드 수정 등을 통해 JVM 메모리가 부족하지 않도록 관리하시거나

나의서비스관리 > 변경신청 메뉴에서 상위사양으로 변경하시어 JVM 메모리 확장해 보시기 바랍니다.

라고 나와있었다..

예전 글들을 보면 설정값을 바꾸면 돌아간다 나와있지만 카페 24에서는 각 가격별 제공해주는 JVM메모리가 다르나보다.. 직접 수정이 불가능하며 결국 더 비싼 요금제를 사용해야 했었다.

나는 스프링부트+JPA에 각종 라이브러리를 사용하여 포트폴리오용 REST-API 서버를 구현하였는데 소스양도 많지않고 포트폴리오 용이다보니 절약형으로 충분히 돌릴 수 있다 생각하였다.. 결론은 비즈니스를 써야한다.
조금 돈을 투자해서라도 비즈니스를 돌리니 바로 해결되었다.

다음에는 AWS를 샤용해봐야 겠다...

반응형