2016-11-29 14 views
0

私は公式のelasticsearchドッカー画像を使用しています。 ESは、メモリマップ領域、(documentedなど)の特定のレベルを必要とするので、私はelasticsearch - max_map_count vsヒープサイズ

docker-machine ssh <NAME> sudo sysctl -w vm.max_map_count=262144 

を使用してそれを増加Iはまた、メモリ割り当ては、全システムメモリの50%程度であることがhereを読み取ります。

私はこれらの2つが一緒に遊ぶ方法について混乱しています。より多くのメモリマップされた領域を割り当てることは、割り当てられたRAMにどのように影響しますか?それはRAMの一部ですか、それともelasticsearchのRAM割り当ての上にあるのですか?

答えて

0

要約すると、ヒープはElasticsearchのみで使用され、Luceneは残りのメモリを使用して索引ファイルを直接メモリにマップし、高速アクセスを高速化します。

これは、残りの半分をLuceneにするために、メモリの半分をESヒープに割り当てることがベストプラクティスである主な理由です。しかし、012ヒットにnot allocate more than 32-ish GB of RAMすることもベストプラクティスです(そして時にはそれもless than 30Bです)。

128GBのRAMを搭載したマシンを使用している場合、64GBをESに割り当てることはできませんが、最大32-ish GBとLuceneは残りの96GBのメモリを喜んで割り当てます。

メモリ設定をチューニングすることは、ESに十分なメモリ(ただしあまりにも多くない)を与え、可能な限り残りのメモリを使用してLuceneが爆発することができるようにすることです。

+0

これは私の質問には答えません。私はメモリマップされた場所について混乱しています。 ESはそれが少なくとも262144であることを望んでいます。それを増やす、または減らすことは何を意味しますか?メモリマップされた各領域のサイズは?それはマシンのラムによって異なりますか? –

+0

'vm.max_map_count'のデフォルト値は65536で、ESはそれを少なくとも4倍の値にすることを提案します(したがって262144)。明らかに、それを増やすことで、Luceneはインデックスファイルをマッピングする仮想メモリを増やすことができ、縮小すると逆の効果が得られます(スワッピングの可能性が増します)。メモリマップされた領域は物理RAMと同じではなく(したがってその一部ではありません)、物理的に存在するかのように考えられる**ディスク上の領域(またはファイル記述子で参照できるもの)メモリ。その背後にある主なアイデアはIO perfを増やすことです。 – Val

+0

また、この回答は役に立ちます:http://stackoverflow.com/questions/38384759/vm-max-map-count-and-mmapfs/38404766#38404766 – Val

関連する問題