Rust:奇妙なメモリ不足エラーの調査
2025-01-19

QoveryのRustサービスであるengine-gatewayが、予期せぬメモリ不足エラー(OOM)でクラッシュしました。モニタリングでは、急な再起動前にメモリ使用量は安定していました。犯人は?backtraceが有効になっている場合、anyhowライブラリは発生したエラーごとにbacktraceを取得します。そして、デバッグモード(`{:?}`)でエラーを出力した場合のみシンボルが解決され、大量のメモリ消費につながります。`RUST_BACKTRACE=1`と`RUST_LIB_BACKTRACE=0`という環境変数を設定し、panic時のみbacktraceを有効にすることで問題を解決しました。この事例は、モニタリングがいかに欺瞞的であり、ライブラリのドキュメントを綿密に確認することがいかに重要であるかを示しています。
開発