0

リポジトリを hazelcast に変更する特定のプロジェクトに取り組んでいます。データ範囲、店舗タイプ、店舗 ID でいくつかのドキュメントを検索する必要があります。私のテストでは、1 つのインスタンス c3.large を使用して 90k のスループットが得られましたが、より多くのインスタンスで同じテストを実行すると、結果が大幅に減少します (10 インスタンス 500k および 20 インスタンス 700k)。これらの数値は、いくつかのプロパティを調整できる最高のものでした:

  • hazelcast.query.predicate.parallel.evaluation
  • hazelcast.operation.generic.thread.count
  • hz:クエリ

より多くの処理を行うためにインスタンスを c3.2xlarge に変更しようとしましたが、その数は価格に見合っていません。

このシナリオで hazelcast をより高速に最適化するにはどうすればよいですか? 私のユーザーケースでは、map.get(key) を使用せず、map.values(predicate) のみを使用します。

設定:

  • ヘーゼルキャスト 3.7.1
  • データ構造としてマップします。
  • IdentifiedDataSerializableを使用した複合オブジェクト。
  • マップ インデックスが構成されています。
  • マップ上のドキュメントは 2000 のみ。
  • Spring Boot アプリケーション (シングルトン) によって構成された Hazelcast 組み込み。
  • 同じリージョン内のすべてのインスタンス。

テスト

  • ガトリング
  • サービスモニターとしてのNew Relic。

どんな助けでも大歓迎です。ありがとう。

4

1 に答える 1

0

ユースケースに述語を含む map.values のみが含まれている場合は、メモリ内ストレージ モデルのようにオブジェクト型を使用することを強くお勧めします。このようにして、クエリの実行中にシリアライゼーションが関与することはありません。

一方、メンバーが 1 人しかいない場合は、非常に高い数値が得られるのが普通です。ネットワークを介して移動するデータがないためです。改善する可能性があるため、ネットワーク容量の大きい EC2 インスタンスをチェックします。たとえば、c3.8xlarge には 10 ギガビットのネットワークがあり、c3.2xlarge には High が付属しています。

どれだけの増加が得られるかはお約束できませんが、まずこれらの変更を試してみたいと思います.

于 2016-10-06T22:08:43.493 に答える