Optimiser le nombre de travailleurs pour plusieurs cas d'armes à feu

Je configure le gunicorn (surveillé par le superviseur et derrière un front de Nginx) et j'ai été un peu confus quant au nombre optimal de process à configurer.

Dans la documentation, il est clairement expliqué que:

workers = multiprocessing.cpu_count() * 2 + 1 

Ma machine est un quad core qui devrait countr pour 9 travailleurs.

Mais je veux exécuter plusieurs applications, chacune écoutant un autre port.

Le count doit-il être (tronqué):

 workers_per_application = int(workers / NUM_APPLICATIONS) 

Ou devraient chacun avoir le nombre de travailleurs ci-dessus?

Je pense que cette question s'applique non seulement à gunicorn, mais à tout type de server d'écoute similaire …

Honnêtement, l'application worker_per_application est plus un réglage de performance pour s'assurer que votre application peut consumr 100% de la CPU à tout moment. Cela ne veut pas dire qu'il le sera. Vous pouvez configurer toutes vos applications pour avoir 9 travailleurs … tant que vous gardez à l'esprit qu'il existe une possibilité qu'une seule application puisse fonctionner sur quelque chose de très difficile qui pourrait entraîner un autre retard / échec à répondre dans le time . L'set de "cpu_count () * 2 + 1" est une suggestion, au mieux … et vous pouvez en append plus … ou less comme vous le jugez nécessaire. Je ne sais pas si cpu_count () renvoie le nombre de processeurs physiques … ou le nombre de kernelx CPU. Un quad-core + hyper-threading peut sembler être 8 kernelx qui se traduiraient par 17 process … ou il ne peut countr que 1 … traduisant en 3 process. Fiddle avec lui et voir ce qui se passe.

Vous voudrez peut-être définir un numéro dur pour cela si vous souhaitez que 2 applications fonctionnent aussi bien sans avoir vu beaucoup de retard causé par l'autre.