2

根据 Sun 关于 ServerSocket 的文档:

传入连接指示(连接请求)的最大队列长度设置为 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

ServerSocket 有另一个构造函数。

public ServerSocket(int port, int backlog)

其中 backlog 是您想要的连接队列大小。最大值 50 仅适用于采用的默认构造函数int port

于 2010-02-03T15:51:27.310 回答
0

要限制连接被拒绝,请确保在为该轮询执行任何发送/接收处理之前处理每个选择轮询的所有连接请求。

于 2010-08-05T11:26:06.523 回答