私は 32 ビットの実稼働システムで MongoDB を使用していますが、これはひどいものですが、今は制御できません。課題は、メモリ使用量を 2.5GB 未満に抑えることです。これを超えると 32 ビット システムがクラッシュするためです。
mongoDB チームによると、メモリ使用量を追跡する最善の方法は、オペレーティング システムのプロセス追跡システム (つまり、Unix システムでは ps または htop、Windows では Process Explorer) を仮想メモリ サイズに使用することです。
DB は主に、継続的にデータを循環する 1 つのテーブルで構成されます。つまり、センサーから定期的にデータを受信し、毎日 cron ジョブが過去 3 日前のすべてのデータを消去します。一定期間にわたって、メモリ使用量はゆっくりと増加します。以下のグラフに示すように、db.serverStats()、db.lectura.totalSize()、および ps を使用して、時間をかけてメモを取りました。問題のテーブルのサイズは先月減少しましたが、それでもメモリ使用量は増加していることに注意してください。
現在、保存するデータの日数には調整の余地があります。今日、基本的にデータの半分を削除してからmongodbを再起動しましたが、メモリ仮想/メモリマップと最も重要なpsによるメモリ使用量はほとんど変化していません! データを消去(および再起動)してもこれらが減少しないのはなぜですか? mongo が使用しているように見えるすべてのメモリを実際に使用しているわけではなく、キャッシュをクリアしたり、メモリの使用を制限したりすることはできないと人々が言った他の質問を読みました。しかし、どうすれば 2.5GB の制限を確実に下回れるでしょうか?
このデータセットのサイズに関係なくメモリ使用量が徐々に増加するのを食い止める方法がない限り、Mongo の 32 ビット バージョンは使用できないように思えます。注: 問題が解決されれば、パフォーマンスが多少低下してもかまいません。