테스트 환경에서 치명적인 문제가 하나 있다. 그것은 eunjeon 라이브러리를 사용하는 모든 클래스는 gradle test에서 오류가 난다.
일단 해결 방법은 build.gradle에서 maxHeapSize를 1024m으로 늘려줌으로써 해결 됐다.
gradle 7.5.1 버전을 사용 중인데, gradle doc을 살펴보니 디폴트 heap max size가 512MiB이다.
다른 테스트에선 이 heap size가 문제가 없지만, eunjeon 라이브러리 즉 자연어 분석 라이브러리는 초기화 될 때, 사전 데이터를 메모리에 로딩 하는 것으로 보인다.
이런 식으로 말이다. 근데 이 과정은 대체 메모리를 얼마나 잡아 먹을까?? 도와줘요 VisualVM~~ 확인 해보자!
서버를 시작한 직후 heap dump를 떠보니 heap size는 34,624,312B (32.97MiB)
바로 치솟는 heap size
621,322,352B(592.51MiB)이다. 처음 보다 약 16.97배 증가 했다..역시나 gradle test default max heap size를 초과 한다.
(이대로 괜찮을까...?? 라이브러리를 바꿔야 하나??)
일단은 검색을 계속 진행해도 크게 변동은 일단 없다.
- APM이 필요하다...!!
- 로컬 환경에서의 heap size를 봤을 땐 사전 데이터 로딩에 의한 급격한 증가 이후 검색이 증가되도, 크게 변동은 없어서 괜찮다고 판단은 되지만 아직 내가 모르는 것이 많기에 데이터를 쌓고 확인 할 수 있는 수단이 필요하다.
- 테스트 코드 보완이 필요하다...!
- 서비스 구현 때문에 미뤄뒀던 부분의 테스트 코드를 다시 보충하자. 겉으로 흉내만 내는 테스트 코드 대신 진짜 이런 문제들을 찾아 낼 수 있는 테스트 코드를 짜자.