9

約1か月前にTerracottaを発見した後、Terracottaの使い方を学んでいます. とてもクールな技術です。

基本的に私がやろうとしていること:

私のルート (System of Record) は ConcurrentHashMap です。

主な Instrumented Class は、HashMap に存在させたい 30 ほどのフィールドを持つ「JavaBean」です。

ハッシュマップには、これらの JavaBeans が約 20000 存在します。

各 Bean には、5 秒ごとに更新される (少なくとも) 5 つのフィールドがあります。

(これに Terracotta を使用する理由は、これらの JavaBeans が JVM およびノー​​ド間でアクセスできる必要があるためです。)

私よりも TC の経験が豊富な人に何かヒントはありますか? パフォーマンスが重要です。

他の同様のアプリケーションの例はありますか?

4

2 に答える 2

7

1つのロックスコープで複数の変更をバッチ処理すると、パフォーマンスが向上する場合があります。同期された各ブロック/メソッドは、サーバーに送信する必要がある(場合によっては他のノードにバックアウトする)必要がある書き込みトランザクションを形成します(書き込みロックを使用することを前提としています)。一連のフィールドを変更することで、おそらく1つのロックの下にある一連のオブジェクトで、トランザクションを作成するオーバーヘッドを削減できます。少なくとも遊ぶための何か。

パーティショニングは、パフォーマンスを向上させるための重要な方法でもあります。変更は、実際にオブジェクトを使用しているノードにのみ送信する必要があります。したがって、どのノードが通常特定のオブジェクトにアクセスするかを分割できる場合は、クラスター全体に送信する必要のある変更の数が減り、パフォーマンスが向上します。

CHMまたはCSMの使用に関するウンニュッツェの提案は良いものです。CHMを使用すると、同時実行性を高めることができます(各内部セグメントをロックして同時に使用できるため)。セグメント数も増やしてみてください。CSMには、エントリごとに実質的に1つのロックがあるため、Nサイズのテーブルに実質的にN個のパーティションがあります。これにより、ロックの競合を大幅に減らすことができます(ただし、より多くの内部ロックオブジェクトを管理する必要があります)。CSMの変更が間もなく行われるため、ロック管理のコストが大幅に削減されます。

一般的に、良い戦略は次のとおりです。

  1. パフォーマンステストを作成します(マルチスレッドおよびマルチノードで、アプリ(または実際のアプリ)に類似している必要があります)。
  2. オブジェクトを調整します-dev-consoleでクラスター化されたオブジェクトグラフを見て、クラスター化する必要がまったくないオブジェクトを見つけます-これは偶然に発生することがあります(一時的なフィールドでクラスターを削除または切断します)。場合によっては、longが実行する日付をクラスタリングしている可能性があります。小さな変更ですが、これはマップエントリごとに1つのオブジェクトであり、違いが生じる可能性があります。
  3. ロックの調整-dev-consoleのロックプロファイラーを使用して、ホットロックまたは狭すぎるまたは広すぎるロックを見つけます。クラスタ化された統計レコーダは、トランザクションサイズの確認にも役立ちます。
  4. GCとDGCの調整-JVMガベージコレクションを調整してから、若い世代のgcの頻度の変更をオンにして、Terracotta分散GCを調整します。
  5. TCサーバーの調整-ここで行う非常に詳細な調整がたくさんありますが、通常、上記のものが調整されるまでは価値がありません。

テラコッタフォーラムでもお気軽にお問い合わせください。エンジニアリング、フィールドエンジニアリング、製品管理のすべてがそれらを監視し、そこで回答します。

于 2009-04-25T18:57:47.323 に答える
3

まず、フォーラムでもこの質問を提起することをお勧めします。

次に、実際には、Terracotta でクラスター化されたアプリケーションのパフォーマンスは、発生する書き込みトランザクションの数に依存します。そのため、ConcurrentStringMap (キーが文字列の場合) または ConcurrentHashMap の使用を検討できます。CSM は、パフォーマンスの点で CHM よりもはるかに優れていることに注意してください。

結局、POJO は遅延ロードされます。つまり、各プロパティはオンデマンドで読み込まれます。

それが役立つことを願っています。

乾杯

于 2009-04-25T16:33:34.673 に答える