3

クライアントとサーバーの両方で Web サービスを作成しました。パフォーマンステストを行うことを考えました。サンプルテストプランでjmeterを実行してみました。最大 3000 のリクエスト jboss はリクエストを処理しましたが、リクエストが 3000 を超えると、リクエストの一部が処理されません (接続を開けません: 接続が拒否されたという意味で)。同時に10000を超えるリクエストを処理するために変更を加える必要がある場所。それはjbossの問題かシステムスループットですか?

jmeter Config : 300 スレッド、1 秒のランプアップ、10 回のループアップ。

システム (サーバー構成) : Windows 7、4G RAM

4

2 に答える 2

9

同時に10000を超えるリクエストを処理するために変更を加える必要がある場所

Tomcat での10,000の同時リクエスト (JBoss で使用されていると思います) はかなりの量です。典型的な設定 (ブロッキング IO コネクタを使用) では、1 つの HTTP 接続ごとに 1 つのスレッドが必要です。これは、通常の JVM には多すぎます。64 ビットのサーバー マシンでは、1 つのスレッドに 1 MiB が必要です (-Xssパラメーターを確認してください)。そして、4 GiB しかありません。

さらに、コンテキスト スイッチの数によってパフォーマンスが低下します。これらすべての接続を効果的に処理するには、何百ものコアが必要になります。また、リクエストが I/O またはデータベースにバインドされている場合、別の場所でボトルネックが発生します。

そうは言っても、別のアプローチが必要です。ノンブロッキング I/O または非同期サーブレット (3.0 以降) を試すか、スケールアウトします。デフォルトでは、Tomcat は 100 ~ 200 の同時接続を処理でき (妥当なデフォルト)、同様の量の接続がキューに入れられます。それ以上のものはすべて拒否され、おそらくあなたはそれを経験しています.

こちらもご覧ください

于 2012-07-29T08:26:52.573 に答える
6

私が考える一般的な問題は2つあります。

最初に、通常のユーザーとして Linux で JBoss を実行すると、limits.conf ファイルを編集していないと、「開いているファイルが多すぎます」というエラーが発生する可能性があります。https://community.jboss.org/thread/155699を参照してください。開いているソケットはそれぞれ、Linux の「開いているファイル」としてカウントされるため、OS はこれにより接続をブロックする可能性があります。

次に、着信接続の最大スレッドプール サイズはデフォルトで 200 です。これにより、同時リクエスト、つまり同時に進行中のリクエストの数が制限されます。jmeter で 300 スレッドを実行している場合、jboss コネクタのスレッドプールはより大きくなるはずです。これは、jboss-web.sar/server.xml の jboss6 にあります。要素で「maxThreads」を探します: http://docs.jboss.org/jbossweb/latest/config/http.html

シングル コア CPU の推奨最大値は 200 です。それ以上になると、Tomasz が言うように、コンテキスト スイッチによってオーバーヘッドが大きくなり始めます。したがって、本番環境で使用する場合は、デュアル コアでは 400、クアッド コアでは 800 などに増やすだけです。

于 2012-07-29T08:56:34.973 に答える