2011-12-16 10 views
1

私の春のアプリケーションのページはレンダリングに5msかかり、abを使用すると1秒あたり約200リクエストが発生していました。処理に5msかかるページに複数のコアの影響

私は、シングルコアのVMでテストしました。

このページでは、xmlファイルを解析して解析し、オブジェクトを初期化してから、そのオブジェクトをmysqlに挿入します。

mysqlがブロックしていないと仮定すると(接続プールのサイズが十分でないか、テーブルロックされていないと仮定します)、別のコアを追加すると、

1つのスレッドがtomcatに当たって1秒あたり200リクエストを受け取った場合、スレッドを正しく増やすと自分のrpsが倍増するはずです。 (明らかにある点まで)。

通常、mysqlは非常に単純なサーブレットアプリケーションで1秒あたり3~4Kの挿入を処理できるように見えるボトルネックです。

+0

レンダリングプロセスが同時に発生する可能性があると仮定すると、rpsは倍増する必要があります –

答えて

2

シングルコアからデュアルコアへの変更は、期待通りに動作するはずです。より多くのコアとより高い負荷が作用すると、スレッドスケジューリングがすべてのスレッドにとって公平でないことに直面するでしょう。

ガーベジコレクションが同時に割り当てられて解放されるため、ガベージコレクションが問題になる可能性があります。

すべての要求が処理される(200 * 5ms)1000msより高速でない限り(約300msの空き時間が必要です)。大丈夫だよ。 しかし、スケジューリングのために、各システムコール(主にDBからのI/O)でユーザーモードからカーネルモードに変更すると、要求を処理するためにさらに時間がかかります。ボトルネックにつながる可能性があります。

+0

サーバ上でabを実行する以外のボトルネックを探す方法はありますか? – codecompleting

+0

@codecompleting DBコードから始めて(200クライアントを使用して)典型的なシーケンスを呼び出して、インデックスがないかどうか、またはクエリが遅いかどうかを調べます。その後、クライアントをビジネスロジックに対して実行させます。最後に、jMeter(http://jmeter.apache.org/)を使用してWeb層に対して実行することを躊躇するかもしれません。 – stacker

関連する問題