Java套接字接受队列长度

时间:2010-02-03 15:43:07

标签: java sockets queue serversocket

根据Sun在ServerSocket上的文档:

  

传入连接指示(连接请求)的最大队列长度设置为50.如果在队列已满时到达连接指示,则拒绝连接。

如何增加队列长度?这是我服务器的瓶颈。

谢谢。

4 个答案:

答案 0 :(得分:3)

ServerSocket constructorbacklog参数一起使用。

您可能还想考虑使用线程池(或实际上是ExecutorService)来分派传入的请求。根据您的架构设计,这通常会带来更好的吞吐量。

答案 1 :(得分:2)

使用构造函数的backlog参数(Javadoc)。但请记住,您将无法将队列增加到操作系统限制之外。这是为了防止SYN攻击 - 有关详细信息,请参阅此article

答案 2 :(得分:0)

ServerSocket还有另一个构造函数。

public ServerSocket(int port, int backlog)

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

的默认构造函数

答案 3 :(得分:0)

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