1

perl スクリプトを使用して、900 万件のレコード ファイルが挿入されています。挿入前に各レコードで何らかの処理を行う必要があるため、一括挿入/mongoimport は使用されていません。

このプログラムは完了するまでに 40 分かかりますが、何らかの理由で時々一時停止し (スワップアウトされますか?)、実行時間が 2 倍、3 倍になり、時には耐えられないほど遅くなります。私は 7 GB の RAM を持っていますが、free -m を使用して確認すると、プログラムの実行時に約 5 GB の空き RAM があると表示されます。リソースを消費するプロセスは実行していません。この遅さの理由は何ですか?それはmongoの問題ですか、それともOSの問題ですか?問題を解決するにはどうすればよいですか? ありがとうございました。

4

1 に答える 1

3

デフォルトでは、Mongo は 1 分ごとに書き込みをディスクと同期するため、挿入は高速ですが、1 分ごとにディスクにフラッシュする必要があり、I/O が増加します。これにより、約 1 分ごとに速度が低下します。

デフォルト設定をより高く変更することはできますが、停電の場合にデータが失われるか、1 秒ごとに fsync することができます。この場合、操作全体は非常に遅くなりますが、
速度は維持されます。

于 2013-07-02T15:24:31.783 に答える