Spring Framework

CI 배포 환경에서 테스트 코드 java.lang.OutOfMemoryError 해결

swdream 2021. 8. 8. 23:54
반응형

위와 같이 CI 에서 빌드 시 테스트가 돌 때, OutOfMemory 에러가 나는 경우가 종종있다. 할당된 heap을 늘려서 해결하는 방법을 알아보자. 우선 로컬 빌드 환경에서는 항상 테스트가 패스했기 때문에, 로컬에서의 메모리를 확인해봤다. 

local에서의 java memory status(역시 할당된 heap 이 훨씬 높다...) -> semaphoreci서버의 환경과 다르다고 생각함 

semphore ci 서버의 java memory status

Max Heap 사이즈가 차이가 남을 볼 수 있음

좀 더 정확한 semaphoreci 서버 상 heap memory allocation을 보기 위해 아래와 같이 확인합니다.

https://medium.com/@hwimalasiri/how-to-increase-maximum-heap-size-of-jvm-in-ubuntu-e836b15284eb

위 링크를 참조해서 max heap을 증가시킵니다.

결론:

  • 세마포어 서버의 heap 공간 부족해서 에러가 일어났고, 세마포어 heap 공간 늘려서 문제 해결. (class 들이 load되고, 이것들이 Bean으로 생성되면서 Heap 에 저장되는데, Heap 의 공간이 부족해서 일어난 것으로 추정됨)
  • local, ec2 서버의 heap 공간이 세마포어 서버의 heap공간보다 훨씬 크게 세팅되어있었음..
  • 처음에 콜백 어노테이션 역시, 어노테이션에 딸린, class들이 로드되고, 이것들이 Bean으로 생성되면서, heap 영역을 더 많이 차지하게 되서 테스트 에러가 발생했던 것으로 추정. Max Heap 사이즈가 차이가 남을 볼 수 있음
    •  
반응형