有多少请求可以在'a'时间处理端口

时间:2012-02-29 11:10:55

标签: java multithreading sockets client-server port

我正在创建一个具有登录页面的Web应用程序,其中用户数量可以同时尝试登录。所以在这里我需要一次处理多个请求。

我知道这已经针对G talk等热门网站实施了。

所以我脑子里有一些问题。

“端口一次可以处理多少个请求?”

我(服务器)可以创建多少个套接字?有什么限制吗?

例如。我们知道当我们使用Socket编程(TCP)实现客户端服务器通信时,我们将'端口号(未保留的端口号)传递给服务器以创建套接字。

所以我的意思是说,如果一次有100000个请求,那么接收这些所有请求的端口是什么。

他是否为所有这些请求编制了一些队列,或者他只是根据他的限制接受了多少个请求?如果是,处理请求限制端口大小是什么?

要点: 我想知道服务器如何同时处理多个请求?我不知道有什么事情。我知道我们通过它的IP地址和端口号与服务器连接。 所以我认为只有一个端口,许多请求只通过不同的客户端来到该端口,所以服务器如何管理所有请求?

这就是我想知道的。如果你详细解释这个概念,那将非常有帮助。不管怎么说,还是要谢谢你。

4 个答案:

答案 0 :(得分:3)

端口不处理请求,它接收数据包。根据服务器的实现,这个数据包可以由一个或多个进程/线程处理,因此理论上这是无限的。但是你总是会受到带宽和处理性能的限制。

如果大量数据包到达一个端口并且无法及时处理,则它们将被缓冲(由服务器,操作系统或硬件)。如果这些缓冲区已满,则可能由网络组件(路由器,交换机)和网络流量所基于的协议处理拥塞。例如,TCP有一些避免或控制拥塞的方法:http://en.wikipedia.org/wiki/Transmission_Control_Protocol#Congestion_control

答案 1 :(得分:1)

这通常在您使用的应用程序/ Web服务器中配置。如何限制并发请求的数量是通过限制允许服务器生成以提供请求的并行工作线程数。如果有更多请求进入而有可用线程来处理它们,它们将开始排队。这是您通常配置的第二件事,即套接字后台日志大小。当后退日志已满时,服务器将在新请求进入时以“连接被拒绝”开始响应。

答案 2 :(得分:1)

然后,您可能会受到OS支持的文件描述符数量(如果是* nix)或Web服务器支持的同时连接数量的限制。我的机器上的操作系统最大值似乎是75000。

答案 3 :(得分:0)

如果您使用Netty之类的内容,则可以在Java中轻松实现100,000个并发连接。

你需要能够:

  • 足够快地接受传入连接。 NIO framework在这里有很大的帮助,这就是Netty在内部使用的内容。传入请求的队列很小,因此您需要能够比队列填满的速度更快地处理这些请求。
  • 为每个客户端创建连接(这意味着连接信息,缓冲区等等的内存开销) - 您可能需要调整VM设置以便为所有连接提供足够的可用内存

请参阅此article from 2009,他们讨论在四核服务器上实现100,000个并发连接,CPU使用率约为20%。