我使用带有ThreadManager的TThreadPoolServer以及PosixThreadFactory。
如果我的理解很好,我将工人数量设置为100,允许100个同时连接。
我想知道我可以设置多少线程。因此,在压力测试崩溃达到160之前,我尝试逐步增加数量和最大值。
我的问题是:正确设置线程数要考虑哪些参数? 第二个问题:是否有一个解决方案来处理超过这个数字(可能是一种聚类?)
答案 0 :(得分:0)
正确设置线程数需要考虑哪些参数?
根据特定的库或产品,最大线程数不是很多,而是取决于线程的使用方式。只需要考虑几点,甚至没有试图提供详尽的清单:
每个线程都会占用一些资源by the pure fact of its existence。具体的每线程影响取决于on the underlying OS以及我们是否谈论真实的OS线程,或goroutines之类的事情。
除非线程正在等待某个事件,否则它使用CPU,RAM和I / O带宽。具体影响取决于这些线程实际应该处理的工作负载。整个系统主要是CPU bound,I/O bound还是可能绑定到另一个共享资源?
跨线程共享资源可能会导致像lock contention这样的影响,这些影响可能会降低整个系统的速度,因为它们必须处理更多的并发访问。这又取决于工作性质和系统架构。
第二个问题:是否有一个解决方案来处理超过这个数字(可能是一种聚类?
现在,这本身就是一个非常广泛的问题。