-1

私のアプリケーションが同時に約1000人のユーザーにヒットする可能性があるというこの問題に悩まされています。600ユーザーの後に次の例外が発生しています。

 java.net.ConnectException: Connection refused: connect
     at java.net.PlainSocketImpl.socketConnect(Native Method)
     at java.net.PlainSocketImpl.doConnect(Unknown Source)
     at java.net.PlainSocketImpl.connectToAddress(Unknown Source)

server.xml には、maxThreads = 200 (デフォルト) の値が設定されています。多くのメモリ使用量が発生するため、これを増やしてより多くのユーザーを実行したくありません。

一度に 1 人のユーザーがサーバーにアクセスすると、すべての http 要求に 10 ~ 60 ミリ秒かかります。アプリケーションを何らかの方法で改善できるかどうかを確認するために、分析をどのように進めればよいか教えてください。

4

2 に答える 2

0

あなたの参照からmaxThreadsserver.xmlTomcatを使用していると思います。

Tomcat のドキュメントhttp://tomcat.apache.org/tomcat-7.0-doc/config/http.htmlをご覧ください。

maxThreadsサーバーは、に到達するまで、新しいリクエスト用の追加スレッドの作成を許可します。さらに、リクエストをキューに追加します。キューの最大サイズはacceptCount、コネクタの によって定義されます。この時点で、サーバーの acceptCount の値は?

任意に増加し続けることもできませんacceptCountが、この時点ではおそらくある程度の柔軟性があります。

長期的には、メモリ使用量を調整して、同じサーバー上で実行するスレッドをさらにいくつか持つことがより賢明な方法です。Web サーバー (Apache httpd など) も使用している場合は、その構成も確認する必要があります。

于 2013-06-17T10:25:16.690 に答える
0

maxThreads を上げる以外に解決策はありません。まさにそのためにあるのです。すぐに 1000 スレッドを作成するわけではないことに注意してください。これは、多くの着信接続を受信した場合に使用する最大値です。

「嵐の後」にスレッドを破棄する場合は、maxSpareThreads パラメータを使用して、1000 個のスレッドすべてがプールに保持されないようにします。

于 2013-06-17T10:24:17.363 に答える