2016-07-28 6 views
0

ダイナミクスから弾性検索に大量のデータセットをエクスポートしています。 以下は手順です。弾性検索のバルクアップロードは時間の経過とともに遅くなります

  1. (私はエンティティフレームワークを使用しています)SQLからデータを取得します。連絡先としてメインの名前を付けましょう。
  2. 次に、定義されたサイズでデータをグループ化し、それらをシリアル化しています。
  3. 一括アップロードのフォーマットデータは、ES Docs
  4. となり、ESエンドポイントに送信されます。

私は時間がかかると大量のログを記録しています。

すべて動作し、エクスポートは1時間でデータをエクスポートします。

つまり、私は、HttpPostの応答時間が増加し続けていることを確認しました。私は私が持っている可能性のあるメモリリークや、処分すべきでないものを探しました。私はそれが後で私に影響を与えないことを確認したい。

応答時間が増える理由は何ですか? 問題を調査するにはどうすればよいですか?

答えて

0

私はES 1.7を使用し、同様のシナリオを使用して約10百万のドキュメントを索引付けします。 私の経験から、ESをハードに押し込むと速度が低下し、OutOfMemory例外で失敗することがあります。 まだ新しいバージョンで問題があるかどうかはわかりません。

IMHOバルクを処理するには時間がかかります。データを受け入れ、インデックス化しますが、その後はインデックスを最適化するためのバックグラウンド処理を行います。

この問題を解決するために、バルクサイズ(N)、インデックスバルク間のスリープ時間(S1)、少数(M)バルク間の睡眠時間(S2)をパラメータとして実験しました。 私のデータセットとハードウェアでは、N = 5000、S1 = 1、M = 10、S2 = 10で終了しました。 安全な値を選択するために、私はCPU、メモリ、およびI/Oの使用法を観察します。たとえば、長期間にわたるI/O使用量の増加は、ESがすぐに中断することを示唆している可能性があります。

私はあなたが持っているハードウェアに非常に依存していると確信しています。特に、できるだけ多くのメモリをESに与えてください!

+0

これは私のために働いた。私は基本的に一括アップロードのスイートスポットを見つけました。 – Alok

関連する問題