반응형
node.js 서버에서 mongoDB로 서비스를 돌리던 도중
The value of "offset" is out of range. It must be >= 0 && <= 17825792
이라는 에러가 발생했다. 해당 오류의 원인을 파악해서 해결했다.
원인
해당 에러가 발생한 이유는 mongoDB에 쿼리의 길이가 약 17MB이상이여서 발생한 현상이였다.
로그를 확인해보니 요청이 들어온 데이터가 거의 30MB정도 되었었다.
해결
해결방법은 크게 2가지가 있다.
1. 너무 큰 데이터인 경우 잘못된 데이터일 확률이 높으므로 request 단에서 해당 데이터를 무시해서 에러를 뱉어버리게 만들기
하지만 1번의 방법은 제대로된 데이터가 실제로 클 확률도 있으므로 권장하지는 않는다.
2. 해당 데이터의 일부분 또는 전체 데이터를 DB에 저장하지 않고 S3로 올리기.
2번의 방법으로 해결했다. 해당 데이터가 잘못되었다는 확신이 없기 때문에 S3로 올리고 너무 큰 경우에는 알림을 받거나 로그를 쌓아두는 방식으로 해결하자.
반응형
'DataBase > MongoDB' 카테고리의 다른 글
[MongoDB] mongodb에서 필드의 이름을 변경하는 방법 (0) | 2023.03.17 |
---|---|
[Mongoose] mongoose를 사용한 mongodb 필드를 삭제하는 방법 (0) | 2022.12.08 |
[Error] MongoServerError: ns not found (0) | 2022.11.08 |
[Mongoose] mongoose 에서 statics method와 instance method의 차이점 (0) | 2022.07.14 |
[Mongoose] mongoose 사용시 save가 느린 현상 해결 방법 (0) | 2022.07.03 |