Rust: 이상한 메모리 부족 오류 조사
2025-01-19
Qovery의 Rust 서비스인 engine-gateway가 예상치 못한 메모리 부족 오류(OOM)로 인해 충돌했습니다. 모니터링 결과 갑작스러운 재시작 전까지 메모리 사용량은 안정적이었습니다. 원인은? backtrace가 활성화된 경우 anyhow 라이브러리는 발생한 모든 오류에 대해 backtrace를 캡처합니다. 디버그 모드(`{:?}`)에서 오류를 출력할 때만 심볼이 해석되며, 이로 인해 많은 메모리가 소모됩니다. `RUST_BACKTRACE=1` 및 `RUST_LIB_BACKTRACE=0` 환경 변수를 설정하여 panic 발생 시에만 backtrace를 활성화함으로써 문제를 해결했습니다. 이 사례는 모니터링이 얼마나 오해의 소지가 있으며 라이브러리 문서를 꼼꼼하게 확인하는 것이 얼마나 중요한지를 보여줍니다.
개발