2

ServerSocketに関するSunのドキュメントによると:

着信接続表示 (接続要求) の最大キュー長は 50 に設定されています。キューがいっぱいのときに接続表示が到着すると、接続は拒否されます。

キューの長さを増やすにはどうすればよいですか? それは私のサーバーのボトルネックです。

ありがとうございました。

4

4 に答える 4

3

パラメーターを指定してServerSocket コンストラクターを使用しbacklogます。

また、スレッド プール (または実際にはExecutorService ) を使用して着信要求をディスパッチすることを検討することもできます。設計方法にもよりますが、これは通常、スループットの向上につながります。

于 2010-02-03T15:48:44.430 に答える
2

backlogコンストラクターのパラメーター ( Javadoc ) を使用します。ただし、オペレーティング システムの制限を超えてキューを増やすことはできないことに注意してください。これは、SYN 攻撃を防ぐためです。詳細については、この記事を参照してください。

于 2010-02-03T15:48:41.847 に答える
0

拒否される接続を制限するには、そのポーリングの送受信処理を行う前に、各選択ポーリングのすべての接続要求を処理するようにしてください。

于 2010-08-05T11:26:06.523 に答える
0

ServerSocket には別のコンストラクターがあります。

public ServerSocket(int port, int backlog)

backlog は必要な接続キューのサイズです。最大 50 は、受け取るデフォルトのコンストラクターにのみ適用されますint port

于 2010-02-03T15:51:27.310 に答える