20.5. その他の設定の調整
パフォーマンスを向上するための追加のヒントは、次の情報を確認してください。
非同期送信の確認応答を使用します。
トランザクション以外の永続メッセージを送信する必要があり、send() の呼び出しが返るまでにメッセージがサーバーに到達したという保証が必要ない場合は、ブロック送信するように設定しないでください。代わりに、非同期送信の確認応答を使用して、別のストリームで返される送信の確認応答を取得します。ただし、サーバーがクラッシュした場合に、一部のメッセージが失わる可能性があります。
pre-acknowledge モードを使用します。
pre-acknowledge モードでは、メッセージはクライアントに送信される前に確認応答されます。これにより、ネットワーク上の確認応答トラフィックの量が減少します。ただし、そのクライアントがクラッシュすると、クライアントが再接続してもメッセージは再配信されません。
セキュリティーを無効にします。
security-enabledパラメーターをfalseに設定してセキュリティーを無効にすると、パフォーマンスがわずかに向上します。永続性を無効にします。
persistence-enabledパラメーターをfalseに設定すると、メッセージの永続性をオフにできます。トランザクションを遅れて同期します。
journal-sync-transactionalパラメーターをfalseに設定すると、トランザクションを永続化する際のパフォーマンスが向上しますが、失敗した場合にトランザクションが失われる可能性が多少あります。非トランザクションを遅れて同期します。
journal-sync-non-transactionalパラメーターをfalseに設定すると、非トランザクションを永続化する際のパフォーマンスが向上しますが、障害発生時に永続メッセージが失われる可能性が多少あります。メッセージを非ブロックで送信します。
送信されるメッセージごとにネットワークラウンドトリップを待機しないようにするには、Java Messaging Service (JMS) および Java Naming and Directory Interface (JNDI) を使用している場合は、
block-on-durable-sendパラメーターおよびblock-on-non-durable-sendパラメーターをfalseに設定します。または、setBlockOnDurableSend()メソッドとsetBlockOnNonDurableSend()メソッドを呼び出して、ServerLocatorで直接設定します。consumer-window-sizeを最適化します。非常に高速なコンシューマーがある場合は、
consumer-window-sizeパラメーターの値を増やして、コンシューマーフロー制御を効果的に無効にできます。JMS API の代わりにコア API を使用します。
JMS 操作は、サーバーが処理する前にコア操作に変換する必要があるため、コア API を使用する場合よりもパフォーマンスが低下します。コア API を使用する場合は、可能な限り
SimpleStringを取得するメソッドを使用するようにします。SimpleStringは、java.lang.String とは異なり、ネットワークに書き込まれる前にコピーする必要がありません。したがって、呼び出し間でSimpleStringインスタンスを再利用すると、不要なコピーを回避できます。コア API は他のブローカーに移植できないことに注意してください。