Multithreading 节约最大可能的线程数

Multithreading 节约最大可能的线程数,multithreading,thrift,Multithreading,Thrift,我正在使用带有ThreadManager的TThreadPoolServer和PosixThreadFactory 我将工作者的数量设置为100,如果我的理解良好,这允许100个同时连接 我想知道我可以设置多少线程。所以我试着逐步增加这个数字,在我的压力测试崩溃之前我能达到的最大值是160 我的问题是:要正确设置线程数,需要考虑哪些参数? 第二个问题:是否有一种解决方案可以处理比这个数字更多的问题(可能是某种集群?) 要正确设置线程数,需要考虑哪些参数 线程的最大数量与其说取决于特定的库或产品,

我正在使用带有ThreadManager的TThreadPoolServer和PosixThreadFactory

我将工作者的数量设置为100,如果我的理解良好,这允许100个同时连接

我想知道我可以设置多少线程。所以我试着逐步增加这个数字,在我的压力测试崩溃之前我能达到的最大值是160

我的问题是:要正确设置线程数,需要考虑哪些参数? 第二个问题:是否有一种解决方案可以处理比这个数字更多的问题(可能是某种集群?)

要正确设置线程数,需要考虑哪些参数

线程的最大数量与其说取决于特定的库或产品,不如说取决于线程的使用方式。只需考虑几点,甚至不必提供详尽的列表:

  • 每个线程都会消耗一些资源。具体而言,每个线程的影响在很大程度上取决于我们谈论的是真正的OS线程,还是类似的东西

  • 除非线程正在等待某个事件,否则它将使用CPU、RAM和I/O带宽。具体影响是什么,取决于这些线程实际应该处理的工作负载。系统作为一个整体主要还是绑定到另一个共享资源

  • 跨线程共享资源可能会导致以下影响,即它们必须处理的并发访问越多,就有可能降低整个系统的速度。这同样取决于工作的性质和系统的架构

第二个问题:是否有一种解决方案可以处理比这个数字更多的问题(可能是某种集群)


这本身就是一个非常宽泛的问题。

嗨,Jens,我理解你的答案,最大线程数不是我们(轻松地)计算出来的从硬件配置或操作系统技术规格来看。我必须进行测试以了解限制并接受它。我的第二个问题对我来说仍然有意义。我的服务器无法正确处理500多个客户端,它只是压碎(甚至不是同时处理的客户端).服务器本身做的还不多。所以,问题是,有没有什么值得鼓励的方法或体系结构(主从式、集群式)在使用节俭时,要打造一个更强大的体系结构?当然这是有道理的。但如果不将其缩小到一个单一的、明确确定的、可解决的问题,就很难回答这个问题。在目前的形式下,可能会有太多的答案。写大量的东西既不是设计的,也不是为之设计的。简言之,你会发现在实例之间安排或负载平衡工作。如果可能,以及如何重新执行取决于任务的性质。--关于崩溃:堆栈跟踪、一些相关代码和良好的问题描述是良好SO问题的一半:-)这是正确的,这个问题可能看起来非常广泛,可能看起来像一个无法解决的问题。但我相信,对于已经面临同样情况的人来说,这是非常清楚和准确的。一般来说,我已经知道如何处理缩放问题。我需要的是一个答案,这个答案来自于一个已经节俭地做到这一点的人的经验。。请注意,我不是指那个特定的页面,而是指整个网站。