Apache Ignite DataGridを使用すると予想されるパフォーマンスが得られません。私はいくつかの構成変更を試みましたが、現時点でパフォーマンスのボトルネックを調べる方法を知らず、専門家の助けを求めています。Apache Igniteキャッシュのputとgetが遅い
私はByteArrayを呼び出すラッパークラスを使用してバイト配列をキャッシュするのにApache Igniteを使用しています。私のテストコードは、複数のputを呼び出すことによってキャッシュのパフォーマンスをベンチマークしようとし、次に別のプロセスから複数の取得を試みます。私は同じノードと異なるノードでgetプロセスを実行しようとしました。また、Java HashMapをキャッシュとして使用してベースラインのパフォーマンス仕様を作成しました。これは、パフォーマンスが大幅に向上しました(putの10000倍)。
今、同じノードで、次のようになります。 ハッシュマップキャッシュ、同じノード:put 2600 MB/s; 300 MB/sを取得する 同じノードキャッシュをイグニッションする:0.4 MB/sを入れる。 2.0 MB/sを取得する Ignite cache、2ノード:0.3 MB/s、
これらは複製モードで実行しましたが、パーティションモードでも同様の結果が得られます。私はテストの複数の反復を実行し、タイミングを平均します。私のノードは25GBのメモリを持ち、私のテストは1GBを消費します。私は最大10GBを使用するようにVMを構成しました。
この問題の洞察を事前にお寄せいただきありがとうございます。
私はあなたがスレッドとIgniteの分散性質について何を言っているのか理解していますが、純粋に私のノードで未処理のパフォーマンスを知るために(そしてベンチマークコードのバグを見つけるために) 'HashMap'の例を作成しました。 Igniteのタイミングは、2つのクライアント(同じノードと2つのノードのケース)であり、それは低いパフォーマンスを得る場所です。私はIgniteを間違って使用しているのだろうかと思います。私の必要性は、N個のノードに一連のputを行い、その後にこれらのノードを取得することです。 Igniteは適切なツールで、MB/s単位のパフォーマンスはどれくらい期待できますか? – Sumit
それがポイントです。ネットワーク通信を意味する分散クラスタとローカル非スレッドセーフマップを比較しています。これは絶対に無効な比較です。どのような作業を行っていても、アフィニティコロケーション(https://apacheignite.readme.io/docs/affinity-collocation)を使用するなど、ネットワークを介して転送されるデータ量を最小限に抑える必要があります。正確なスループット数に関しては、ノードを追加することでIgniteをスケールアウトすることができるため、事実上制限はありません。 –