MongoDBを数週間使用していますが、全体的な傾向として、mongodbのメモリ使用量が大きすぎる(データセット+インデックスのサイズ全体よりもはるかに大きい)ことがわかりました。
私はすでにこの質問とこの質問を読んでいますが、私が直面している問題に対処しているものはないようです。実際にドキュメントで説明されていることを説明しています
以下は、htopおよびshow dbsコマンドの結果です。
mongodbはメモリマップドIOを使用することを知っているので、基本的にOSはメモリ内のキャッシュを処理し、理論的には別のプロセスが空きメモリを要求したときに mongodb がキャッシュされたメモリを解放する必要がありますが、私たちが見たところ、そうではありません。
OOMは、他の重要なプロセス(postgres、redisなど)を殺す開始を開始します(この問題を克服するために、RAMを183GBに増やしましたが、現在は動作しますがかなり高価です。mongoは〜87GBのRAMを使用しています。データセット全体のサイズのほぼ4倍)
そう、
- これだけのメモリ使用量が本当に予想され、正常ですか?(ドキュメントによると、WiredTigerはキャッシュに最大で60%のRAMを使用しますが、データセットのサイズを考慮すると、86GBのRAMを使用するのに十分なデータさえありますか?)
- メモリ使用量が予想される場合でも、別のプロセスがより多くのメモリを要求し始めた場合、mongoが割り当てられたメモリを手放さないのはなぜですか?RAMを増やしてシステムを完全に不安定にする前に、mongodb自体を含め、他のさまざまな実行中のプロセスがLinux oomによって絶えず殺されていました。
ありがとう!