我读过 C10K 问题的 wiki,但它让我很困惑。有人能解释一下以下几点吗
- 为什么会出现这个问题
- 我们没有办法解决这个问题
答案1
传统上,如果 Web 服务器获得一个连接,它就会启动一个工作线程,并且该工作线程会一直存在直到连接结束,即使该连接上没有数据或很少有数据。
由于每个工作进程都需要一定数量的 RAM,因此工作进程的数量受服务器 RAM 数量限制,这意味着连接数受 RAM 限制。通常,最终连接数会远低于 10,000 个。
例如,nginx 不使用基于线程的架构,而是基于事件的架构。因此,它不会在每个连接上占用大量资源,并且可以同时处理更多连接。
更多信息可以参见开源应用程序的架构:nginx