質問

Webアプリケーション(Spring、Struts2 RESTで構築、PostgreSQLを使用)で JMeter でストレステストを行っています。

アプリで典型的なユーザーのシナリオをシミュレートしています:

GET 4回、INSERT 3回、UPDATEコール20回。

サーバーの仕様:

4core Intel Xeon X5365 3GHz

8GB RAM

シングル320GB SATAディスク

OS:Ubuntu 8.10 32ビット

DB:Postgresql 8.4

Tomcat 6.0.18

Java 1.6.0_14

結果は、サーバーが約130の同時トランザクションを処理することを示しています。この番号は可能ですか?私と比較するための結果はオンラインにありますか?

役に立ちましたか?

解決

ボトルネックはデータベース内にあるため、データベースのパフォーマンスを知らずに比較するのは非常に困難です。

同様のマシンがあります(Tomcat 5.5を実行する16GB RAMを除く)。ピーク負荷では、256の同時接続に簡単に対応できます。 maxThreadsを512に変更することを議論しています。

いくつかのチューニングのヒント、

  1. Apacheをフロントエンドとして実行する場合は、 mod_jk を使用します。そのパフォーマンスは mod_proxy よりもはるかに優れています。
  2. HTTPを直接提供する場合、またはmod_proxyを使用する場合は、Tomcat 6のNIOコネクタを使用します。
  3. スレッドプール(maxThreads)が十分に大きいことを確認します。デフォルトは200のみです。
  4. Tomcatをステートレスにします。特に、HttpSessionは使用しないでください。この状態により、アプリでメモリリークが発生し、パフォーマンスが徐々に低下する場合があります。すべての状態をデータベースまたはクライアント(Cookie)にプッシュします。
  5. データベースプーリング(DBCP)を使用します。 MySQLがあり、JDBCドライバーは非常におしゃべりです。
  6. JMeterの1つのインスタンスを実行すると、それがボトルネックになる可能性があります。異なるネットワークから複数のスレーブを実行して、実際の生産負荷をシミュレートします。
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top