在 c10k 问题中通常使用每个客户端一个线程是否有任何最佳理由?
我们可以在每个线程中放置 5、10 或 25 个吗?性能会有什么负面变化吗?
每个客户端有一个线程似乎对系统来说非常繁重,如果我们每个线程有 25 个线程,我们可以为 10,000 个线程提供 400 个线程,而不是为 10,000 个线程提供 10,000 个线程。
在 c10k 问题中通常使用每个客户端一个线程是否有任何最佳理由?
我们可以在每个线程中放置 5、10 或 25 个吗?性能会有什么负面变化吗?
每个客户端有一个线程似乎对系统来说非常繁重,如果我们每个线程有 25 个线程,我们可以为 10,000 个线程提供 400 个线程,而不是为 10,000 个线程提供 10,000 个线程。
处理 10K+ 连接有两种完全不同的模型:
两种模型都可用于处理超过 100K 的连接,并且两种模型在某些领域都有其优势。直接比较,它们的区别如下:
多线程:
单线程:
可以将这两种模型结合起来。在这种情况下,通常使用每个内核一个线程(而不是一个线程用于 N 个连接)。这个模型有一些很好的用例。但是,也存在一个巨大的问题:它结合了两种模型的缺点。这意味着,您必须在所有线程安全、非阻塞和异步方面付出努力。通常,工作量是纯模型之一的两倍。
这就是为什么对于大多数应用程序而言,纯模型通常优于混合模型的原因。例外是边缘组件,它们必须每秒处理数百万个请求,例如负载平衡器和代理。