-2

高負荷では、アプリケーションのパフォーマンスが大幅に低下します。これはメッセージ駆動のBeanベースの安らかなAPIです。毎秒27ヒットの平均負荷では、websphereアプリケーションサーバーの両方のノードで最大サーバーセッションを20に設定し、キュー接続ファクトリセッションプールを20に、JDBC接続プールを20に保っていました。タイムアウトなしで1秒で応答を得ることができました。アプリケーションのパフォーマンスチューニング

平均負荷の3倍、つまり80ヒット/秒のピーク負荷では、要求の半分以上がタイムアウトになり、平均応答時間が6秒に達するとアプリケーションのパフォーマンスが低下します。

各ノードの最大サーバーセッション数は40、キュー接続ファクトリセッションプール数は40、JDBC接続プール数は40になりました。HP Diagnosticsによるモニタリングでは、データベースサーバーのCPU使用率が非常に高くなり、すなわち98%まで。

私の質問は、データベースへの接続数が増えるとCPU使用率が急激に増加するか、起動されるクエリに依存しているかどうかです。また、JDBC接続プールの接続数を減らすことも、MDBインスタンスごとに1つの接続を行うことも可能です。

ピーク負荷でパフォーマンスを向上させる方法を教えてください。

+0

ここにはさまざまな変数があります。ほとんどの場合、オンデマンドで接続を作成するコストは高価なので、常にプール接続を使用する必要があります。私はアプリケーションのプロファイリングをお勧めし、最初にアプリケーションの処理時間が長い場所を見つけることをお勧めします。外部DBについて考えてみると、DBソフトウェア、CPU、ディスクIO、および同じマシンのネットワークIOに依存しないXの特定のスループットが、DB全体として必要になることがあります。あなたのアプリケーションはうまくいくかもしれませんし、DBのスループットです。アプリケーションをDBに絞り込む必要がある場合とそうでない場合があります。 – Underbalanced

+0

パフォーマンステストをお持ちの場合は、ピーク負荷で試してみて、さまざまな設定がスループットにどのように影響するかをご覧ください。 – Kayaman

+0

@Kayaman私はあなたの意見を得ていませんでした。どの設定を参照していますか? – Neel

答えて

0

厳密に言えば、DBへの接続数を増やすと、DBサーバーのCPU使用率がそれほど高くならない可能性があります。メモリフットプリント、多少、CPUのutil、そうではありません。これらの接続がアプリケーションによって使用されている場合にのみ、それらの接続で実行されるSQLによってCPU使用率が上昇します。接続プールのサイズをMDBの数よりも少なくすることは可能ですが、一般的には良い考えではありません。パフォーマンスをチューニングする方法はいくつかあります.DBサーバーのCPU使用率を測定する方法があります。まず、単一の接続でアプリケーションによって作成された典型的なトランザクション負荷と高いトランザクション負荷を判断します。典型的な負荷を生成するようにアプリケーションを駆動するには、DBサーバーのCPUを50%になるまでパス(接続およびMDBインスタンス)の数を増やします。これで、予想される最も高いトランザクションレートでアプリケーションを起動します。 DBサーバーのCPU使用率は、選択した快適なレベル、おそらく80%に留まっていることを確認してください。 80%未満の場合は、接続/ MDBインスタンスが追加されるまで追加してください。 80%より大きい場合は、80%に近づくまで接続数とMDBインスタンス数を減らしてください。これは、パフォーマンスを調整する多くの方法のうちの1つに過ぎず、当然のことながら、予測可能な速度でアプリケーションに負荷を発生させることができます。

+0

さらに分析すると、CPU使用率がデータベースサーバーで非常に高くなっていることがわかりました。これはほぼ98%です。これはタイムアウトが起きてからです。他のフォーラムの確認私は、vmstatを実行した後に見つかった実行キューの数が、サーバー上のCPUの数を超えてはならないことがわかりました。私は、実行カウントが70になるのを見ることができましたが、CPUの数は16ではありませんでした。ここで何ができるのですか?ハードウェアがこのようなスループットをサポートできず、追加のCPUが必要です。ここに。 – Neel

関連する問題