1

com.sun.net.httpserver.HttpServerの実行中のインスタンスに接続すると、「接続が拒否されました」というメッセージが返されることがあります(ごくまれに)。

なぜこれが起こるのか誰か知っていますか?処理できる接続数にスレッド制限はありますか?増やすことはできますか?ありがとう。-r

4

1 に答える 1

2

ドキュメントから:

アドレスとポート番号にバインドする場合、アプリケーションは整数のバックログ パラメータを指定することもできます。これは、システムが内部的にキューに入れる着信 TCP 接続の最大数を表します。接続は、HttpServer によって受け入れられるのを待っている間、キューに入れられます。制限に達すると、基礎となる TCP 実装によってそれ以降の接続が拒否される (または無視される可能性がある) 場合があります。適切なバックログ値を設定することは、TCP レイヤーでのリソースの効率的な使用 (設定を高くしすぎないこと) と、着信要求の適切なスループットを許可すること (設定を低くしすぎないこと) との間の妥協点です。

あなたはこれを見ているかもしれません。

または、 setExecutor ()を使用してエグゼキュータを設定します。デフォルトのエグゼキューターには、必要な数よりも少ないスレッドが構成されている可能性があり、適切に構成されたThreadPoolExecutorが機能する場合があります。

于 2009-10-29T18:19:07.463 に答える