ESインデックス書き込みパフォーマンスの最適化

オンにする必要が優れた記事を参照してください
ます。https://blog.csdn.net/zhuzhuba008/article/details/77483199このリンクを


大量に書かれた1、
あなたが内側に移動したい場合は、あなたのビジネスシナリオをサポートできる場合、その後、あなたのビジネスシナリオに応じて、データに注ぎESあなたがして、追記型ESを、まとめてデータのグループを収集することができますバルク方式を使用してみてください、各バッチは、このような数百を書きます。

バルク・バッチの性能は、性能の多くは、あなたよりもはるかに優れて書き文書を書きます。あなたが最良のバルク要求のサイズを知りたい場合は、圧力測定は、シャードの単一個々のESノード上で実行する必要があります。第1のバルクはそうで100文書、次いで200、400、及び、バルクサイズが一度倍になるたびに書き込みます。一括書き込み性能が時間を平らにするために始めた場合、これが最善のバルクサイズです。バルクサイズが大きくない方が良いが、大きいバルクサイズが過度のメモリ圧力につながる可能性があるため、それをテストするためになど、特定のクラスタ環境に応じて、それは10メガバイトよりもデータ量に対する要求を送信しないことが最善です。

第1のバルクサイズを決定することで、この時間はシングルスレッドであることを試みるために、テスト用ESノード、破片、。データ-時間シングルスレッドの書き込みパフォーマンスの最大数を見てみましょうすることは比較的良好です。

図2に示すように、データES書き込むために複数のスレッドを使用する
シングルスレッド送信バルク要求がスループットESクラスタを最大にするために書き込むことができないが。クラスタのすべてのリソースを利用したい場合は、クラスタに書かれたマルチスレッドのバルクデータを使用する必要があります。より良いクラスタのリソースを利用するためには、そのマルチスレッドの同時書き込みは、あなたは、基礎となるディスクのfsyncのそれぞれの数とコストを削減することができます。まず、例えば、最初の二つのスレッドは、スレッド4は、8つのスレッド16、スレッドの数を2倍ずつ続いて、単一の圧力検出ESシャード単一ノードを作ります。一度TOO_MANY_REQUESTSエラーが返さES、たJavaClientはEsRejectedExecutionExceptionです。この時点で、その後、それがESは同時書き込みに最大のボトルネックとなっていると言われて、私たちが知っているこの時間はわずか書かれたような高い同時実行をサポートすることができます。

3は、更新間隔の増加
デフォルトのリフレッシュ間隔は、それが新しいセグメントファイルを作成し、ディスクにメモリ内のすべてのデータ毎秒のESを強制されますので、index.refresh_intervalパラメータは、設定することができて、1秒です。これは、1秒を見ることができた後、私たちにデータが書き込まれた後、それぞれの時間を聞かせて、このギャップです。私たちは、このような30代のような主要な間隔、30代になる場合にのみ、すべての30代のメモリに書かれているので、しかし、30代は、その後、我々は、より大きな書き込みスループットを得ることができ、見た後に書き込まれたデータを受け入れることができますこれは、セグメントファイルを作成します。

リフレッシュとrepliaを禁止4、
我々はESへのデータの一時間を大量にロードする場合は、あなたが最初のリフレッシュを禁止コピーできるとrepliaは-1に設定index.refresh_intervalます、index.number_of_replicasは0に設定することができます。リフレッシュするメカニズムとレプリカが存在しないので、これは、データの私たちの損失をもたらすことができます。しかし、セグメントファイルを作成する必要、レプリカの別のレプリカにデータをコピーする必要はありませんが、上記行かないshasrd。このとき、書き込み速度は、一度完成し、非常に高速でリフレッシュし、レプリカは通常の状態に戻って変更することができます。

5は、スワップメモリをスワップ禁止し
ますが、ディスクのESにスワップされたメモリをJVMにしたい場合は、メモリに戻し、ディスクIOの多く、パフォーマンスの低下

6は、ファイルシステムのキャッシュメモリへのより多くの
ファイルシステムのキャッシュがより多くのIO操作を実行するために使用され、我々はより多くのメモリリソースをfilesystemcache与えれば、その後、パフォーマンスESを書くはるかに良いでしょう。

7、自動的に生成されたIDを使用して
、我々は、手動でID ESドキュメントを設定したい場合は、プロセスは比較的時間がかかり、すべてのは、IDの存在を確認するために、ES必要があります。私たちは、あなたがこのステップESをスキップすることができますので、自動的に生成されたIDを使用している場合、パフォーマンスが良くなる書き込み。フィールドES文書があるようなテーブルのidであなたのビジネスのために、それを使用することができます。

8は、ハードウェアの優れたパフォーマンスで
、我々はより多くのファイルシステムのキャッシュメモリを与えることができ、SSDは、使用のRAID 0ストライピングディスク同時読み取りは、などの効率を向上させる検討し、他のNASストレージネットワークの使用を避け、代わりに機械的なハードドライブを使用することもできますように。

9、インデックスバッファ
、我々は非常に重い高い同時書き込み操作になりたい場合は、それは大きなバッファのインデックス番号、indices.memory.index_buffer_size、これはもう少し調整することができ、インデックスバッファのサイズを設定し、すべてのシャードを転送するのが最善です数のシャードで割ったならば、何も大きなパフォーマンスが向上するため、公開、将来的には、使用可能なメモリの平均破片の計算されたサイズは、一般的に、しかし、各シャードのために512メガバイトまでのため、推奨されます。ESは、各シャード共有インデックスバッファとしてこのセットは、これらの特に活性な断片は、このバッファのより使用になります。このパラメータのデフォルト値は、我々はjvmheapに10ギガバイトのメモリを割り当てる場合は、JVM 10%のヒープで10%、で、その後、インデックスバッファは1ギガバイトは、2シャードのシェアのため、それが十分なされています。
---------------------
免責事項:この記事は「zhuzhuba008」元の記事CSDNのブロガーである、CC BY-SA 4.0の著作権契約以下、複製、オリジナルを添付してくださいソースリンクと、この文。
オリジナルリンクします。https://blog.csdn.net/zhuzhuba008/article/details/77483199

おすすめ

転載: www.cnblogs.com/xinyumuhe/p/11363543.html