服务器可以处理的并发请求数

Number of concurrent requests a server can handle

在《Computer Networking - A Top Down Approach》一书中,我刚刚研究到,TCP套接字由四个参数唯一标识:

  1. 发件人的 IP 地址
  2. 发件人端口号
  3. 收件人的 IP 地址
  4. 接收方端口号

以服务器为例,我们知道服务器的IP地址和端口号是固定的。客户端的 IP 地址和端口号显然会有所不同。如果有新请求,服务器将打开一个新线程(打开一个新的 TCP 套接字)来处理该请求。

我的问题是,我们是否可以执行任何计算来计算单个服务器机器可以处理的最大客户端数?

谢谢

嗨,这是个好问题

第一,如果一个线程处理一个连接,那么x86计算机的限制会很低。由于虚拟内存限制为 4GB,因此每个进程大约为 1000。对于 x64,它会相对更高。但是线程之间的切换并不是我们希望看到的。

所以,我们用一个线程来处理很多连接,也就是I/O多路复用。

更重要的是,这还有一个局限性,我们称之为C10K and C10M,我们通过非阻塞I/O多路复用像epoll或IOCP来解决这些问题,DPDK有助于解决C10M.

如果你想达到更高的连接数,那么我们使用分布式系统而不是只有一台服务器。

服务器的局限说来话长,我想你可以从中学到很多。