개요
아래 에러 메세지와 함께 특정 비즈니스 로직의 저장 기능이 아예 먹통이 되는 현상이 발생
<--- Last few GCs --->
[56467:0x110008000] 258162 ms: Mark-Compact 4043.9 (4134.5) -> 4034.7 (4139.3) MB, pooled: 0 MB, 495.21 / 0.00 ms (average mu = 0.801, current mu = 0.040) task; scavenge might not succeed
[56467:0x110008000] 259000 ms: Mark-Compact 4049.8 (4139.5) -> 4040.5 (4145.3) MB, pooled: 0 MB, 819.04 / 0.00 ms (average mu = 0.585, current mu = 0.023) task; scavenge might not succeed
<--- JS stacktrace --->
FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory
Plain Text
복사
원인분석
여러 update/insert문을 한번에 만드는 경우 메모리 오버 플로우 현상이 발생함
this.create를 통해 query할 데이터를 쌓게 되는 경우 그 건 수가 많아지게 되면 병목현상이 발생한다. 해당 함수를 통해 query를 생성할 때 메모리를 굉장히 많이 사용하게 되는 이슈 때문인 것으로 보인다.
해결방안
1.
API 서버 스케일 업
2.
현재 메모리 사이즈에 맞게 벌크로 들어온 값을 메모리상 등록가능한 만큼만 나누어 요청을 보냄