2012-02-01 17 views
3

マシン1でMQサーバー7.1が実行されています。私はマシン1でキューにメッセージを書き込むためにJMSを使用するマシン2で実行されているJavaアプリケーションを持っています。Javaアプリケーションは毎秒何百ものメッセージを処理します。現在、キューにメッセージを書き込むには、200のテキストメッセージ(平均サイズ600バイト)または2000メッセージ/秒で約100msかかります。この合理的なパフォーマンスです。パフォーマンスをさらに向上させるためにできることはいくつかあります。すなわち速い?WebSphere MQパフォーマンス

答えて

8

WebSphere MQパフォーマンス・レポートには、多数の詳細な推奨事項があります。これらはSupportPacsとして公開されています。 SupportPac landing pageから始めれば、あなたが望むものはすべてMPxxと呼ばれ、プラットフォームおよびバージョンごとに利用可能です。

あなたがサポートパックから見るように、箱から出してWMQは、メッセージのサイズと種類の幅広いバリエーション間で速度と信頼性のバランスのために調整されます。設定や設計/アーキテクチャによるチューニングにはかなりの自由度があります。

永続および非永続メッセージのバッファ、トリプルライトからシングルライトへのディスク書き込みの整合性を削減するオプション、ログファイルのサイズと数値のチューニング、接続の多重化などのオプションがあります。 QMgrが特定のトラフィック特性に合わせて調整されるほど、より速くそれを得ることができるということを推測することができます。これは、新しいタイプのトラフィックがチューニング仕様の範囲外にある場合に、緊急に反応する傾向にあるQMgrをチューニングするということです。

Iはまた、別のスピンドルにWMQファイルシステムを割り当てる多大な性能向上が見られました。永続メッセージが書き込まれると、キューファイルとログファイルの両方に移動します。これらのファイルシステムの両方が同じディスクの読み書きヘッドに対して競合していると、パフォーマンスが低下する可能性があります。このため、高性能ラップトップでは、ほぼ同じサイズの仮想マシンやサーバーよりもWMQが低速で実行されることがあります。ラップトップに物理スピニングディスクがあり、WMQファイルシステムが割り当てられていて、サーバーにSANがある場合、比較はありません。

デザインの観点から、並列性から多くのパフォーマンスを得ることができます。パフォーマンスレポートによれば、クライアント接続数を増やすとパフォーマンスが大幅に向上し、その後レベルが低下して最終的には低下し始める点が分かります。幸い、落ちる前のクライアントの数は非常に多く、WebアプリケーションサーバーはWMQが動作する前に、通常は必要なJavaスレッドの数から低下します。

大きな違いをもたらす別の実装の詳細は、コミット間隔です。一度に多数のメッセージを置くことができるようなアプリであれば、パフォーマンスが向上します。同期点の下にある永続メッセージは、COMMITが発生するまでディスクにフラッシュする必要はありません。 1つの作業単位に複数のメッセージを書き込むことで、WMQはプログラムに制御を迅速に戻し、書き込みをバッファし、一度に1つのメッセージを書き込むよりもはるかに効率的に最適化することができます。

Of Mice and Elephantsこの記事では、チューニングオプションについて詳しく説明します。これは、developerWorks Mission:Messagingシリーズの一部であり、チューニングにも触れる他のいくつかの記事が含まれています。

+0

ありがとう、これは私を助けました。現在、XAトランザクションで100個のメッセージを送信しています。バッチ挿入としてデータベースに100個のメッセージを挿入でき、パフォーマンスが向上しました。 MQのコミット間隔のアプローチは、DBのバッチインサートに似ていますか?これは私に関心があり、私はそれを調べます。 – arrehman

+2

"コミット間隔"私は、MQ設定ではなく、COMMITを発行する前に、アプリケーションが読み書きするメッセージの数について話しています。いくつかのアプリケーション(要求/応答など)は、作業単位内の1つのメッセージで最も効果的です。しかし、バッチロードや変換のようなものに対しては、メッセージを読み込み、結果のメッセージを書き出してループすることができ、x回の反復ごとに 'COMMIT'を発行するだけです。 DBはトランザクションごとに@ 100回の更新をバッチ処理しているので、WMQメッセージをXAトランザクションに含めてWMQのコミット間隔を100にするのは明らかです。 –

+0

Rob、これは私が今やっていることです。バッチインサートとして100レコード、XAトランザクション内のすべてのキュー(100が送信)に100メッセージを記録します。キューのキューの深さは100ずつ増加します。これは私のために働いています。 – arrehman

1

私はこれを見ることをお勧めします:Configuring and tuning WebSphere MQ for performance on Windows and UNIX

+0

[リンクのみの回答はお勧めできません。](http://meta.stackoverflow.com/tags/link-only-answers/info)、SOの回答は解決策の検索の終点でなければなりません。時間の経過とともに古くなる傾向がある参照の途中降機)。リンクを参考にして、ここにスタンドアロンの概要を追加することを検討してください。 – kleopatra

関連する問題