节流最大可能的线程

时间:2016-03-11 16:56:43

标签: multithreading thrift

我使用带有ThreadManager的TThreadPoolServer以及PosixThreadFactory。

如果我的理解很好,我将工人数量设置为100,允许100个同时连接。

我想知道我可以设置多少线程。因此,在压力测试崩溃达到160之前,我尝试逐步增加数量和最大值。

我的问题是:正确设置线程数要考虑哪些参数? 第二个问题:是否有一个解决方案来处理超过这个数字(可能是一种聚类?)

1 个答案:

答案 0 :(得分:0)

  

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

根据特定的库或产品,最大线程数不是很多,而是取决于线程的使用方式。只需要考虑几点,甚至没有试图提供详尽的清单:

  • 每个线程都会占用一些资源by the pure fact of its existence。具体的每线程影响取决于on the underlying OS以及我们是否谈论真实的OS线程,或goroutines之类的事情。

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

  • 跨线程共享资源可能会导致像lock contention这样的影响,这些影响可能会降低整个系统的速度,因为它们必须处理更多的并发访问。这又取决于工作性质和系统架构。

  

第二个问题:是否有一个解决方案来处理超过这个数字(可能是一种聚类?

现在,这本身就是一个非常广泛的问题。