Red Hat Training

A Red Hat training course is available for Red Hat JBoss Enterprise Application Platform

18.17.3. その他のチューニング

HornetQ には、チューニングを実行できるさまざまな場所があります。
  • 非同期送信応答を使用します。トランザクション以外の永続メッセージを送信する必要があり、send ()が返すときにサーバーに到達したことを保証する必要がある場合は、永続メッセージをブロックに送信 するように設定しないでください。代わりに非同期送信の確認応答を使用して、別のストリームで送信の応答を取得します。
  • pre-acknowledge モードを使用します。pre-acknowledge モードでは、メッセージはクライアントに送信される前に確認応答されます。これにより、ネットワーク上の確認応答トラフィックの量が減少します。
  • セキュリティーを無効にします。standalone.xml または domain.xmlsecurity-enabled パラメーターを false に設定してセキュリティーを無効にすると、パフォーマンスが若干向上します。
  • 永続性を無効にします。standalone.xml または domain.xmlpersistence-enabled を false に設定すると、メッセージの永続性を完全にオフにすることができます。
  • トランザクションを遅れて同期します。standalone.xml または domain.xmljournal-sync-transactional を false に設定すると、トランザクションの永続的なパフォーマンスが向上しますが、障害時にトランザクションが失われる可能性があります。
  • トランザクション以外の遅延を同期します。standalone.xml または domain.xmljournal-sync-non-transactional を false に設定すると、障害時に永続メッセージが失われる可能性が高まり、非トランザクションの永続的なパフォーマンスが向上します。
  • ブロック以外のメッセージを送信します。standalone.xml または domain.xml (JMS および JNDI を使用している場合は)または ServerLocator に直接、block-on-durable-send および block-on-non-durable-send を false に設定します。つまり、送信されるすべてのメッセージに対してネットワークラウンドトリップ全体を待機する必要はありません。
  • 高速なコンシューマーがある場合は、consumer-window-size を増やすことができます。これにより、コンシューマーフローの制御が無効になります。
  • ソケット NIO とソケット古い IO の比較デフォルトでは、HornetQ はサーバーとクライアント側で古い(ブロッキング)を使用します。NIO は非常にスケーラビリティーが高くなりますが、古いブロッキング IO と比較してレイテンシーのヒットが発生することがあります。サーバーで数千の接続を多数処理するには、サーバーで NIO を使用する必要があります。ただし、サーバーに数千の接続がない場合、サーバーアクセプターは古い IO を使用して維持でき、パフォーマンスが小さい可能性があります。
  • JMS ではなくコア API を使用します。JMS API を使用すると、サーバーが処理する前にすべての JMS 操作をコア操作に変換する必要があるため、コア API を使用する場合よりもパフォーマンスが低下します。コア API を使用する場合は、可能な限り SimpleString を取得するメソッドの使用を試みます。SimpleString は、java.lang.String とは異なり、ネットワークに書き込まれる前にコピーする必要がないため、呼び出し間で SimpleString インスタンスを再利用する場合に不要なコピーを回避できます。