0

約 100 人のユーザーを Web サービスに送信すると、応答が返され、Web サービスは正常に実行されますが、1000 人の同時ユーザーを確認すると、どの要求にも応答がありません。

テストにはjmeterを使用しています。

1000 人の同時ユーザーを送信すると、glassfish 管理パネルがブラウザでタイムアウトになり、4 ~ 5 分後に開きます。wsdl URL でも同じことが起こります。

LAN で Web サービスをテストしましたが、2000 クエリで問題なく動作します。

解決策を見つけるのを手伝ってください。

編集 1.0

その他の調査結果

こんにちは、あなたの推薦で、私がしたことは、Webサービス関数呼び出しで文字列を返しただけで、ルックアップもDAOも何も...文字列を返すだけでした

スレッドプールは2000で問題ありません。

1000 人のユーザーに対して jmeter を実行したところ、非常に高速に実行され、〜 200 のリクエストに対して応答が返されました

つまり、これは、i5 プロセッサと 4GB RAM を搭載した Windows 7 を実行している私の PC が、xeon 5*** 8 コアを搭載した 4GB RAM を持つホストゲーターの専用サーバーを実行していないことを意味します :(

これは、月額 220 ドルを払っている人のためのものではありません....

私の発見が間違っている場合は修正してください。私はローカルで 2 台の PC の LAN でアプリをテストしましたが、2000 以上のメッセージをスムーズに処理できます。

編集 1.1

多くの読書と実践の後、このような動作の原因はネットワーク遅延であるという結論に達しました。

Glassfish の管理パネルで Bean プールのサイズを増やしたところ、同時ユーザー数が 300 に改善されましたが、プールに保持する Bean の数に関係なく、問題が再び発生します。

友人の質問です: Glassfish の管理パネルで変更できる他の設定を提案して、この問題をルートから削除してください!

4

2 に答える 2

1

サービスが実行するさまざまなステップのパフォーマンス ログを追加する必要があります。複数のステップを実行しますか?計算は遅いですか?データベースへのアクセスが遅い?接続プールが適切に拡張されていませんか? このような高い同時実行性を可能にするために、Web サーバーを微調整する必要がありますか? これらを測定してボトルネックを見つけ、それらを排除できるようにする必要があります。

于 2012-08-01T04:57:09.367 に答える
0

サーバーで同じ問題が発生しました(同時に200人以上のユーザーがいる)。公式のglassfishチューニングガイドを調べましたが、表示されない非常に重要なパラメーターがあります。私も Jmeter を使用しました。私の場合、応答時間は指数関数的に増加しますが、サーバーのプロセッサは低いままです。

Glassfish 管理サーバー (configurations/server-config/Network config/thread pools/http-thread-pool) で、サーバーが処理できるユーザー数を確認できます。(パラメータはグラスフィッシュ 2 と 3 で異なります)。

Max Queue Size: キュー内のスレッドの最大数。–1 の値は、キュー サイズに制限がないことを示します。

最大スレッド プール サイズ: スレッド プール内のスレッドの最大数

最小スレッド プール サイズ: スレッド プール内のスレッドの最小数

アイドル スレッド タイムアウト: スレッドがプール内でアイドル状態を維持できる最大時間。この時間が経過すると、スレッドはプールから削除されます。

この問題を解決するには、Max Thread Pool Sizeを 100 または 200に設定することをお勧めします。

また、別の JMV 変数を設定することもできます。たとえば、次のようになります。

-Xmx/秒/分

-サーバ

-XX:ParallelGCThreads

-XX:+AggressiveOpts

お役に立てば幸いです。

于 2012-08-13T10:30:53.583 に答える