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
以上是uwsgi进程的ps
输出。奇怪的是,对于每个ini文件,有两个实例加载 - 即使我有两个uwsgi主人。这是正常的吗?
uwsgi的部署策略是
uwsgi.ini
uwsgi.conf for 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 (我有两个应用,除app#numbering外,两个应用都有相同的ini):
[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
答案 0 :(得分:3)
您使用--master选项启动它,它生成一个主进程来控制工作程序。
来自官方文档https://uwsgi-docs.readthedocs.org/en/latest/Glossary.html?highlight=master
主强>
uWSGI内置的prefork +线程多工作管理模式,通过轻按主开关激活。对于所有实际的服务部署,不使用主模式并不是一个好主意。
你应该阅读http://uwsgi-docs.readthedocs.org/en/latest/Options.html#master 此线程也可能有一些信息给你。 uWSGI: --master with --emperor spawns two emperors
通常不建议一起使用--master和--emperor。
答案 1 :(得分:0)
我对这个主题的猜测是,它应该确实转移到服务器故障。 但是答案就是这样:
你应该两次启动upstart脚本; - )
尝试使用SIGTERM杀死主ROOT进程并查看childs进程是否死亡。 如果您已经运行了两次upstart脚本,那么剩下一个ROOT和两个孩子。