在c10k问题中,每个客户端通常使用一个线程是否有任何理由?
我们可以为每个线程添加5,10或25个?性能会有任何负面变化吗?
每个客户端有一个线程似乎对系统非常负担,如果我们每个线程有25个线程,我们可以拥有400个线程,10,000个而不是10,000个10,000个。
答案 0 :(得分:1)
处理10K +连接有两种完全不同的模型:
两种型号都可以用于超过100K的连接,两种型号在某些领域都有其优势。在直接比较中,它们的区别如下:
<强>多线程:强>
<强>单线程:强>
可以将这两种模型结合起来。在这种情况下,通常使用每个核心一个线程(而不是N个连接的一个线程)。这个模型有一些很好的用例。然而,还存在一个巨大的问题:它结合了两种模型的缺点。这意味着,您必须花费精力来完成所有线程安全,非阻塞和异步。通常,这种努力是其中一种纯模型的两倍。
这就是为什么纯模型通常比大多数应用程序的混合模型更受欢迎的原因。例外是边缘组件,它必须每秒处理数百万个请求,例如负载均衡器和代理。