Im using, gunicorn django_project.wsgi:application --bind=127.0.0.1:8866 --daemon
comme ligne de commande pour exécuter mon django sur le serveur avec 6 processeurs et ram de 14 Go, mais je n’ai pas installé les ouvriers, j’utilise 2 applications sur ce serveur, comment puis-je obtenir des performances maximales, en utilisant toutes les mémoires RAM et les processeurs.
Vous pouvez passer un argument de ligne de commande pour spécifier le nombre de travailleurs que vous souhaitez exécuter, voir: http://docs.gunicorn.org/en/stable/settings.html#worker-processes
Cependant, si vous souhaitez obtenir par programmation le nombre de cœurs, mieux vaut passer un paramètre pour lire la configuration d’un module, comme:
gunicorn django_project.wsgi:application -c gunicorn.py.ini
Et le contenu de gunicorn.py.ini
serait:
from multiprocessing import cpu_count bind = '127.0.0.1:8866' daemon = True workers = cpu_count()
Il existe également une formule commune utilisée pour spécifier le nombre de travailleurs:
workers = cpu_count() * 2 + 1
Voir le raisonnement derrière ceci sur: http://docs.gunicorn.org/en/stable/design.html#how-many-workers
En ce qui concerne l’utilisation de la mémoire, je pense qu’il n’y a pas grand chose à faire, ils vont utiliser autant de mémoire qu’ils en ont besoin. Cependant, vous pouvez essayer quelques autres choses pour optimiser vos travailleurs. Vous pouvez spécifier la worker_class
dans le fichier de configuration, par exemple:
worker_class = 'gevent'
Et testez celui qui vous convient le mieux, voir la liste des classes de travailleurs disponibles sur: http://docs.gunicorn.org/en/stable/settings.html#worker-class
De plus, en spécifiant l’option max_requests
( http://docs.gunicorn.org/en/stable/settings.html#max-requests ), vous pouvez forcer le redémarrage des travailleurs après un nombre spécifié de demandes. Ceci est essentiellement utile si votre code perd de la mémoire pour une raison quelconque, de sorte que, au redémarrage, le système d’exploitation les nettoyera.
max_requests = 1000 # a reasonable value