現在のシナリオは次のとおりです。マシンのパフォーマンスは、CPU が非常に優れています。 i7の型番を忘れてしまいました。 nb は、クエリ中に CPU 操作がほとんどないことを意味します。 htop からご覧ください。しかしメモリは良くなく、8gしかなく、将来メモリは確実に増設されます。ハードディスクも普通のメカニカルディスクなので後日交換しますが、それはまた後ほど 今感じていることは、クエリデータが10万件を超えるとioにボトルネックが現れ、ioがロックされてメモリが枯渇してしまうということです。使用量も充実しています。その結果、他の操作が滞り、影響は小さいものの、Web 上のページの待ち時間が長くなってしまいます。
現在、次の最適化が行われています:
1. Linux スタック サイズ値を調整します。 ###2、インデックスを作成します。
3. 最近 (1 か月間) 変更されていない、人気のあるデータを別のコレクションに入れます。
上記の 3 つの最適化により、状況は改善されます。ただし、クエリに複数の条件が含まれる場合、インデックスが無効になるという問題がまだあります。状況は依然として同様に悪い。
つまり、非常に矛盾しています。どうすればうまく対処できるでしょうか?では、同じ構成の別のサーバーがある場合、シャーディングなどの運用でこの状況は解決できるのでしょうか?
###ありがとう###
巴扎黑2017-05-17 10:04:32
mongoDB の最適化は、1. メモリを追加する、2. メモリを追加する、3. マザーボードの最大メモリを挿入する、という方法で実行できます。
Redis + mysql ソリューションへの変更を検討できます。
某草草2017-05-17 10:04:32
ご参考までに。
1. まず、どのビジネス CRDU 操作が遅いかを特定し、それらの操作を中心に最適化します。
2. 一般的に、メモリの追加/SSD の交換は比較的一般的な方法です。最適化のための共通パラメータ設定もいくつかあります。MongoDB のプロダクション ノートを参照して、それに応じて設定することができます。
https://docs.mongodb.com/manu...
MongoDB が大好きです!楽しむ!