优化多个gunicorn实例的工作人员数量

我正在configurationgunicorn(由supervisord监听,并在nginx前端后面),并且对于设置的最佳进程数量感到困惑。

在文件中明确解释说:

workers = multiprocessing.cpu_count() * 2 + 1 

我的机器是一个四核心,所以应该算9名工人。

但是我想运行几个应用程序,每个应用程序都听一个不同的端口。

那么计数应该(截断):

 workers_per_application = int(workers / NUM_APPLICATIONS) 

还是应该每个人都有上述数量的工人?

我认为这个问题实际上不仅适用于gunicorn,而且适用于所有类似的监听服务器。

老实说,workers_per_application更多的是性能的调整,以确保您的应用程序可以随时消耗100%的CPU。 这并不意味着会。 你可以configuration所有的应用程序有9个工作人员……只要你记住,有一个应用程序可能正在处理一些非常困难的事情,这将导致另一个迟滞/无法及时回应。 整个“cpu_count()* 2 + 1”的东西是一个build议,最好…你可以添加更多的…或更less,因为你认为是必要的。 我不知道,如果cpu_count()返回物理处理器的数量…或CPU核心的数量。 四核+超线程可能看起来是8个核心,可以翻译为17个进程,也可能只计为1个…翻译为3个进程。 摆弄它,看看会发生什么。

如果您希望2个应用程序同时运行,而没有看到另一个应用程序造成太多延迟,则可能需要为此设置一个硬编码。