1. ホーム
  2. mongodb

[解決済み] GridFSは実運用に耐えうる速度と信頼性を持っているか?

2023-04-30 01:55:45

質問

私は新しいウェブサイトを開発し、すべてのユーザのアップロードのためのストレージとしてGridFSを使用したいと思っています。

nginxで提供されるGridFSのベンチマークによると、nginxで提供される通常のファイルシステムほど速くはないようです。

nginxのベンチマーク

GridFSをすでに本番環境で使っている人、あるいは新しいプロジェクトで使おうとしている人はいますか?

解決方法は?

私は仕事で gridfs を使用しています。このサーバーは、価格比較サイトの一部で、立派なトラフィック統計 (約 25k/day) があります。サーバーの RAM は 2 ギガとそれほど多くなく、CPU もそれほど高速ではありませんが (Core 2 duo 1.8Ghz) 、サーバーには 10TB (sata) の RAID 0 構成の十分なストレージ容量があります。このサーバーが行う作業は非常に単純です。

価格比較サイトの各製品には画像があり (製品データベースでは約 1,000 万の製品があります)、サーバーの仕事は、画像をダウンロードしてサイズを変更し、gridfs に保存して、グリッドに存在しない場合は訪問者のブラウザに配信し......、グリッドに既に保存されている場合は訪問者のブラウザに配信することです。つまり、これは「伝統的な cdn スキーマ」と呼ぶことができます。

このサーバーが稼働して以来、私たちは400万枚の画像を保存し、処理してきました。リサイズと保存はシンプルな php スクリプトで行っていますが、python スクリプトや java のようなもののほうが確実に速いです。

現在のデータサイズ:11.23g

現在のストレージサイズ:12.5g

インデックス : 5

インデックスサイズ:849.65m

信頼性について : これは非常に信頼できます。サーバーに負荷がかからず、インデックスサイズも問題なく、クエリも高速です。

速度について : 確かに、ローカルファイルストレージほど速くありませんが、10%ほど遅いかもしれません。しかし、画像処理が必要なときでもリアルタイムで使用できるほど速く、私たちの場合、非常にphpに依存しています。メンテナンスと開発の時間も短縮されました:単一または複数の画像を削除するのがとても簡単になりました。もう一つ興味深いのは、ローカルファイルストレージ(何千ものフォルダに何百万ものファイル)を持つ古いサーバーを再起動すると、システムがファイルの整合性チェックを行うため、何時間もハングアップすることがありました(これは本当に何時間もかかりました...)。gridfs ではこの問題はなくなり、画像は大きな mongodb チャンク (2gb ファイル) に保存されるようになりました。

それで...私の考えでは... はい、gridfs は実稼働に使用するのに十分な速度と信頼性を持っています。