uwsgi: pourquoi deux processus sont chargés par application?

root@www:~# ps aux | grep uwsgi root 4660 0.0 0.0 10620 892 pts/1 S+ 19:13 0:00 grep --color=auto uwsgi root 19372 0.0 0.6 51228 6628 ? Ss 06:41 0:03 uwsgi --master --die-on-term --emperor /var/www/*/uwsgi.ini root 19373 0.0 0.1 40420 1292 ? S 06:41 0:03 uwsgi --master --die-on-term --emperor /var/www/*/uwsgi.ini www-data 19374 0.0 1.9 82640 20236 ? S 06:41 0:03 /usr/local/bin uwsgi --ini /var/www/app2/uwsgi.ini www-data 19375 0.0 2.4 95676 25324 ? S 06:41 0:03 /usr/local/bin uwsgi --ini /var/www/app3/uwsgi.ini www-data 19385 0.0 2.1 90772 22248 ? S 06:41 0:03 /usr/local/bin uwsgi --ini /var/www/app2/uwsgi.ini www-data 19389 0.0 2.0 95676 21244 ? S 06:41 0:00 /usr/local/bin uwsgi --ini /var/www/app3/uwsgi.ini 

ci-dessus est la sortie ps des processus uwsgi. Chose étrange, pour chaque fichier ini, deux instances sont chargées – même si j’ai deux maîtres uwsgi. est-ce normal?

la stratégie de déploiement pour uwsgi est

  • avoir Empereur géré par upstart
  • L’empereur cherche chaque uwsgi.ini dans le dossier apps

uwsgi.conf pour upstart:

 # simple uWSGI script description "uwsgi tiny instance" start on runlevel [2345] stop on runlevel [06] exec uwsgi --master --die-on-term --emperor "/var/www/*/uwsgi.ini" 

uwsgi.ini (j’ai deux applications et les deux applications ont la même ini, sauf la numérotation des applications):

 [uwsgi] # variables uid = www-data gid = www-data projectname = myproject projectdomain = www.myproject.com base = /var/www/app2 # config enable-threads protocol = uwsgi venv = %(base)/ pythonpath = %(base)/ wsgi-file = %(base)/app.wsgi socket = /tmp/%(projectdomain).sock logto = %(base)/logs/uwsgi.log 

Vous l’avez lancé avec l’option –master, qui génère un processus maître pour contrôler les travailleurs.

De la documentation officielle https://uwsgi-docs.readthedocs.org/en/latest/Glossary.html?highlight=master

maîsortingser

Le mode de gestion multi-travailleurs préfork + threading intégré à uWSGI, activé en activant l’interrupteur principal. Pour tous les déploiements de serveurs pratiques, il n’est pas vraiment judicieux de ne pas utiliser le mode maître.

Vous devriez lire http://uwsgi-docs.readthedocs.org/en/latest/Options.html#master Et aussi ce fil pourrait avoir des informations pour vous. uWSGI: –master avec –emperor génère deux empereurs

Il est généralement déconseillé d’utiliser –master et –emperor ensemble.

Ma supposition éclairée sur ce sujet est qu’il devrait effectivement être transféré à Server Fault. Mais voici la réponse:

Vous devriez avoir commencé le script upstart deux fois 😉

Essayez simplement de tuer le processus ROOT principal avec un SIGTERM et voyez si le processus Childs est mort. Si vous avez exécuté le script upstart deux fois, il vous restra un ROOT et deux enfants.