マシン1でMQサーバー7.1が実行されています。私はマシン1でキューにメッセージを書き込むためにJMSを使用するマシン2で実行されているJavaアプリケーションを持っています。Javaアプリケーションは毎秒何百ものメッセージを処理します。現在、キューにメッセージを書き込むには、200のテキストメッセージ(平均サイズ600バイト)または2000メッセージ/秒で約100msかかります。この合理的なパフォーマンスです。パフォーマンスをさらに向上させるためにできることはいくつかあります。すなわち速い?WebSphere MQパフォーマンス
答えて
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シリーズの一部であり、チューニングにも触れる他のいくつかの記事が含まれています。
[リンクのみの回答はお勧めできません。](http://meta.stackoverflow.com/tags/link-only-answers/info)、SOの回答は解決策の検索の終点でなければなりません。時間の経過とともに古くなる傾向がある参照の途中降機)。リンクを参考にして、ここにスタンドアロンの概要を追加することを検討してください。 – kleopatra
- 1. WebSphere MQのメッセージグループ
- 2. のWebsphere MQメッセージ
- 3. Websphere MQの問題
- 4. C#IBM MQ WEBSPHERE MQRC_NOT_AUTHORIZED
- 5. Spring JMS + WebSphere MQクライアント
- 6. IBM WebSphere MQ作成スクリプト
- 7. IBM WebSphere MQ JMS Jarファイル
- 8. WebSphere MQキューの作成
- 9. IBM WebSphere MQのvmsクライアント
- 10. Websphere MQチャネルtimedout AMQ9271エラー
- 11. Apache Camel - Websphere MQ統合
- 12. アクティブなMQパフォーマンス
- 13. IBM MQ - AMQ6109:内部WebSphere MQエラーが発生しました
- 14. Websphere MQのJMSクライアントのトレース/デバッグ・ログを有効にするMQ
- 15. IBM MQ/WebSphere MQ:.NETからサーバーを管理する
- 16. JMSを使用したWebSphere MQ
- 17. WebSphere MQトランザクションログファイルシステムがいっぱい
- 18. WebSphere MQ用のHermesJMSツールの代替
- 19. IBM Websphere MQからApache Apexオペレータ・ストリームへ
- 20. C++アプリケーションのSVRCONNチャネルのWebSphere MQ SSL
- 21. JMSのWebsphere MQ BytesMessgeとのTextMessage
- 22. Websphere MQとSpring-AMQPの統合
- 23. Websphere MQ Serverとクライアント間のSSL/TLSハンドシェイク
- 24. Websphere MQ 7with Spring JMS - 無限配送
- 25. DLLでWebsphere MQに接続する
- 26. IBM Websphere MQ - UIログインの問題
- 27. JMS JMSS0002(Spring JMSとIBM Websphere MQ)
- 28. WCFとWebSphere MQを使用したログ
- 29. WebSphere MQ .NET - ローカルでのテスト方法
- 30. UnixでのWebSphere MQセキュリティ認証例外
ありがとう、これは私を助けました。現在、XAトランザクションで100個のメッセージを送信しています。バッチ挿入としてデータベースに100個のメッセージを挿入でき、パフォーマンスが向上しました。 MQのコミット間隔のアプローチは、DBのバッチインサートに似ていますか?これは私に関心があり、私はそれを調べます。 – arrehman
"コミット間隔"私は、MQ設定ではなく、COMMITを発行する前に、アプリケーションが読み書きするメッセージの数について話しています。いくつかのアプリケーション(要求/応答など)は、作業単位内の1つのメッセージで最も効果的です。しかし、バッチロードや変換のようなものに対しては、メッセージを読み込み、結果のメッセージを書き出してループすることができ、x回の反復ごとに 'COMMIT'を発行するだけです。 DBはトランザクションごとに@ 100回の更新をバッチ処理しているので、WMQメッセージをXAトランザクションに含めてWMQのコミット間隔を100にするのは明らかです。 –
Rob、これは私が今やっていることです。バッチインサートとして100レコード、XAトランザクション内のすべてのキュー(100が送信)に100メッセージを記録します。キューのキューの深さは100ずつ増加します。これは私のために働いています。 – arrehman