网络服务器中的 C10k 是什么?

网络服务器中的 C10k 是什么?

我读过 C10K 问题的 wiki,但它让我很困惑。有人能解释一下以下几点吗

  1. 为什么会出现这个问题
  2. 我们没有办法解决这个问题

答案1

传统上,如果 Web 服务器获得一个连接,它就会启动一个工作线程,并且该工作线程会一直存在直到连接结束,即使该连接上没有数据或很少有数据。

由于每个工作进程都需要一定数量的 RAM,因此工作进程的数量受服务器 RAM 数量限制,这意味着连接数受 RAM 限制。通常,最终连接数会远低于 10,000 个。

例如,nginx 不使用基于线程的架构,而是基于事件的架构。因此,它不会在每个连接上占用大量资源,并且可以同时处理更多连接。

更多信息可以参见开源应用程序的架构:nginx

相关内容