标签: tcp server concurrency
在《计算机网络-自上而下的方法》一书中,我研究了TCP套接字由四个参数唯一标识:
对于服务器,我们知道服务器的IP地址和端口号是固定的。客户端的IP地址和端口号显然会有所不同。如果有新请求,服务器将打开一个新线程(以打开一个新的TCP套接字)来处理该请求。
我的问题是,我们可以执行任何计算来计算单个服务器计算机可以处理的最大客户端数量吗?
谢谢
答案 0 :(得分:0)
嗨,这是一个很好的问题。
首先,如果一个线程处理一个连接,则x86计算机的限制将非常低。由于虚拟内存限制为4GB,因此每个进程的内存大约为1000。对于x64,它将相对更高。但是我们不希望看到线程之间的切换。
因此,我们使用线程来处理大量连接,即I / O复用。
此外,这仍然有局限性,我们将其称为C10K和C10M,并且我们通过非阻塞I / O复用(例如epoll或IOCP)解决了这些问题,而DPDK很有用解决C10M。
如果您希望获得更高的连接号,那么我们将使用分布式系统,而不是仅使用一台服务器。
服务器的局限性是一个很长的故事,我想您可以从中学习很多。