![网络服务器中的 C10k 是什么?](https://linux22.com/image/693658/%E7%BD%91%E7%BB%9C%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%AD%E7%9A%84%20C10k%20%E6%98%AF%E4%BB%80%E4%B9%88%EF%BC%9F.png)
我读过 C10K 问题的 wiki,但它让我很困惑。有人能解释一下以下几点吗
- 为什么会出现这个问题
- 我们没有办法解决这个问题
答案1
传统上,如果 Web 服务器获得一个连接,它就会启动一个工作线程,并且该工作线程会一直存在直到连接结束,即使该连接上没有数据或很少有数据。
由于每个工作进程都需要一定数量的 RAM,因此工作进程的数量受服务器 RAM 数量限制,这意味着连接数受 RAM 限制。通常,最终连接数会远低于 10,000 个。
例如,nginx 不使用基于线程的架构,而是基于事件的架构。因此,它不会在每个连接上占用大量资源,并且可以同时处理更多连接。
更多信息可以参见开源应用程序的架构:nginx