증상
회사에서 프로젝트의 CI/CD 테스트 단계에서 간헐적으로 별 이유 없이 테스트가 실패하는 증상이 발생. 원인은 OOM이었음.
테스트 코드가 늘어나면 테스트 스크립트에 사용되는 메모리도 증가하게 됨.
이슈
1. 메모리에서 완전히 해제되지 않음.
https://github.com/jestjs/jest/pull/12205
- jest 에서 테스트 환경 격리를 위해 vm.Script 를 사용함. (위 PR에서 다른 함수로 대체하려고 하고 있음)
- vm.Script 은 실행 후에 메모리에서 완전히 해제되지 않음
- 테스트가 많을 수록 결국 메모리가 쌓이게 되는 구조
접근
메모리를 과도하게 잡아먹으면 대처 방안은 2가지임
- 불필요하게 메모리 사용하는 곳을 찾아 개선한다.
- 허용된 메모리 이상을 사용하지 못하도록 제한한다.
댓글