mongodb占物理内存,我们一台服务器8G内存,没有开mongodb的时候,物理内存只占11%,当开了mongodb,mongodb进程的内存显示是60M,但物理内存已经是99%,请问是什么原因?有没有优化的办法,我们是在WINDOWS系统.
伊谢尔伦2017-04-24 09:15:16
Tang Jianfa という人が次のように言ったのを覚えています: mongodb はメモリを消費しませんが、その本来の目的は意図的にメモリを占有することです。
大家讲道理2017-04-24 09:15:16
Mongodb 自体はメモリ管理を行わず、そのメモリ管理は完全にシステムに依存します。システム パフォーマンス モニターを使用して、メモリと仮想メモリを確認できます。簡単に言うと、mongdb はメモリを消費するので、パフォーマンスを向上させるためにホット データのほとんどをメモリに配置します。
私たちのサーバーは Windows Server 2008 で、メモリは 32G ありましたが、しばらく実行するとメモリがすべて使い果たされてしまいましたが、そのパフォーマンスは驚くべきものでした。ただし、そのサーバーには mongodb だけが存在していたので、他のプログラムに影響を与えることがよくありました。その後、Windows System Resource Manager WSRM を使用して mongodb プロセスのメモリを制限してみました。実際に試してみることができます。
しかし、私が mongodb を使い始めたのは一昨年で、当時のバージョンは比較的古いもので、メモリを制限した後、mongodb が非常に不安定になり、ログを見ると、マップされたメモリが見つからないことがよくありました。そこでその後、メモリの制限を諦め、mongodb コマンドを使用して毎日固定点でメモリを解放することに切り替えました{closeAllDatabases:1}
このコマンドにもコストがあり、コマンドが完了するまでブロックされ、解放された直後に効率が低下し、ゆっくりと回復するには「ウォームアップ」の時間がかかります。
私は後者の方法が良いと思います。過去 2 年間の観察を通じて、すべてが比較的安定しています。もちろん、mongodb に別のサーバーを提供できれば素晴らしいでしょう。
迷茫2017-04-24 09:15:16
新しい MongoDB エンジンは、それ自体がシステム内の唯一の重要なサービスであると見なすため、(オペレーティング システムのキャッシュではなく) 独自のキャッシュと同じくらい多くのメモリを占有しようとします。他のプロセス用にメモリを予約する必要がある場合、または複数の MongoDB インスタンスがある場合は、
パラメータを使用して MongoDB キャッシュ サイズを制限できます。 --cacheSizeGB