/ / MongoDBとRedisを同じサーバーにセットアップする - node.js、mongodb、architecture、redis

同じサーバにMongoDBとRedisをセットアップする - node.js、mongodb、architecture、redis

現在、簡単なAPIサーバーを使用してセットアップしています。Node.jsとMongoDBですが、リクエストをキャッシュするためにRedisを組み込み始めたいと思います。 MongoDBサーバーと同じマシンにRedisインスタンスを設定するのは悪い習慣ですか?将来MongoDBサーバーを拡張する場合に注意すべきRedisセットアップの問題はありますか?

回答:

回答№1は4

RedisとMongoDBは実際には良い組み合わせですが、特にMongoDBデータベースがメモリに収まらない場合は、同じノードにインストールしないでください。

MongoDBは、の仮想メモリメカニズムを利用します。OSとそのデータ構造(btree)は、(メモリの局所性が原因で)スワップが発生した場合でも、正直なパフォーマンスを発揮します。 MongoDBデータベースがメモリよりも大きい場合、マシンは交換します。これは予想される動作です。

一方、Redisはシングルスレッドですデータ構造がランダムメモリアクセス用に調整されているメモリデータストア。すべてがメモリに収まる必要があります。ホストが何らかのRedisメモリをスワップアウトし始めると、パフォーマンスは悪くなります。

両方を同じホストに配置した場合、MongoDBはマシンを交換すると、Redisは反応しなくなります。この問題を回避する1つの方法は、MongoDBがマシンのメモリを消費しないようにcgroups(または同様の分離メカニズム)を使用することですが、構成がより複雑になります。お勧めしません。


回答№2の場合は0

最大の問題はリソース作業セット用にデータをページインしようとしているMongoDBと、OSがそれらのページを割り当てるのと同じメモリアドレスを使用しようとしていることを再要求している間の競合

私自身の経験から私はredisを持っていますMongoDBは互いに連携して動作していますが、それらが連携して動作している理由は、私のMongoDBワーキングセットとredisに格納していたデータ量が原因であることを強調しておきます。

私が言っているのは、それはすべてあなた次第だということです。あなたがそれらを実行する金属と一緒に2つの使い方。あなたがたくさんの保存にredisを使っていて、MongoDBのワーキングセットが同じくらい大きいのなら、例えば小さなサーバーなら、ふたつはお互いにぶつかるでしょう。 2人が隣同士で楽しく座るためには、それほど問題にならないでください。