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.xml
でsecurity-enabled
パラメーターを false に設定してセキュリティーを無効にすると、パフォーマンスが若干向上します。 - 永続性を無効にします。
standalone.xml
またはdomain.xml
でpersistence-enabled
を false に設定すると、メッセージの永続性を完全にオフにすることができます。 - トランザクションを遅れて同期します。
standalone.xml
またはdomain.xml
でjournal-sync-transactional
を false に設定すると、トランザクションの永続的なパフォーマンスが向上しますが、障害時にトランザクションが失われる可能性があります。 - トランザクション以外の遅延を同期します。
standalone.xml
またはdomain.xml
でjournal-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
インスタンスを再利用する場合に不要なコピーを回避できます。