TIL 20210521 API호출 시 메모리 크기?

jiffydev·2021년 5월 25일
0

회사가 운영하는 웹사이트가 버전업을 하면서 사용하던 DB도 MySQL에서 MongoDB로 변경되었기 때문에 마이그레이션이 필요하게 되었다.
마이그레이션 조작을 하는 것이 내 임무였는데, 어려운 것은 없고 환경 세팅 후 전임자가 미리 작성해 둔 코드를 실행하기만 하면 되는 일이었다.

그래서 별 문제 없이 끝날 줄 알았는데, 항상 같은 지점에서 502 internal server error가 뜨는 것이었다. 문제의 원인을 파악하기 위해 모니터링 시스템을 확인하였고, 400번대의 에러가 bot으로 인해 발생하는 것을 발견했다. 다만 bot은 직접적인 원인이 아니었던 것이, status code도 달랐고 robots.txt를 수정해서 모든 봇을 막아도 에러는 여전히 발생했다.

결국 문제의 원인은 마이그레이션 시 api를 호출하는데, 이 때 특정 구간의 데이터가 지나치게 컸기 때문으로 보인다. 코드 상에서 DB의 id를 일정 구간을 나누어 호출했는데(예: abc~acz로 시작하는 id), limit, offset이 설정되어 있지 않아 특정 구간의 데이터가 클 경우 이를 회피할 수단이 없어 에러가 난 것이다.

이전까지 테스트로 몇 번 마이그레이션을 했을 때는 이와 같은 에러가 한 번도 발생한 적이 없어서 전혀 생각하지 못했지만, 마이그레이션과 같이 큰 데이터를 다룰 경우 메모리가 어느정도까지 버틸 수 있는지 반드시 체크하고, 기본적으로 limit, offset을 설정해서 애초에 에러가 발생하지 않도록 해야 할 것이다.

profile
잘 & 열심히 살고싶은 개발자

0개의 댓글