Mongoデーモンのメモリ使用量を4Gに制限する方法を見つけようとしています。
Memlockでlimits.confを使用することを考えましたが、それが正しい方法かどうかはわかりません。
limits.confのマニュアルページからulimitはプロセスではなくユーザーに参照されていること、また「memlock」の定義が明確ではないことを理解しました。
memlock
maximum locked-in-memory address space (KB)
プロセスのメモリ使用量を制限するにはどうすればよいですか?
MongoDBは、すべてのストレージにメモリマップファイルを使用します。これらのファイルのサイズを制限できるようです。
ただし、上部に表示される大きなメモリ数に隣接している場合は、Mongoの物理メモリ使用量と(正確に)対応していません。そのメモリの一部は、ioキャッシュ設定に応じて、マップされたディスクになります。 メモリ使用量の確認(MongoDB) を参照してください。
memlockは、スワップアウトできないページのユーザー使用を制限します。巨大なページ。それはあなたが探しているものではありません。
MongoDBではVSSにデータセット全体が含まれるため、ulimit -v
は使用しないでください。 ulimit -m
を試してRSSを制限することもできますが、それはLinux2.6以降では機能しません。たとえそうだったとしても、制限に達すると、プログラムがメモリを割り当てようとして失敗するため、奇妙な動作が発生する可能性があります。
より良いアプローチは cgroups を使用することです。 jlebarには チュートリアル があります。 cgroupsとulimitの2つの重要な点は、