3
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

以上是psuwsgi 进程的输出。奇怪的是,对于每个 ini 文件,都加载了两个实例——即使我有两个 uwsgi 主机。这是正常的吗?

uwsgi的部署策略是

  • 皇帝由暴发户管理
  • uwsgi.iniEmperor在apps文件夹中搜索每个

新贵的uwsgi.conf

# 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(我有两个应用程序,两个应用程序都有相同的ini,除了app#编号):

[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
4

2 回答 2

4

您使用 --master 选项启动它,该选项产生一个主进程来控制工作人员。

来自官方文档https://uwsgi-docs.readthedocs.org/en/latest/Glossary.html?highlight=master

掌握

uWSGI 内置 prefork+threading 多线程管理模式,通过轻拨主开关激活。对于所有实际的服务部署,不使用主模式并不是一个好主意。

您应该阅读http://uwsgi-docs.readthedocs.org/en/latest/Options.html#master 而且这个线程可能会为您提供一些信息。uWSGI: --master 和 --emperor 产生两个皇帝

一般不建议 --master 和 --emperor 一起使用。

于 2013-09-13T13:22:19.640 回答
0

我对这个主题的有根据的猜测是它确实应该转移到服务器故障。但这里是答案:

您应该两次启动新贵脚本;-)

只需尝试使用 SIGTERM 杀死主 ROOT 进程,看看子进程是否死亡。如果你已经运行了两次 upstart 脚本,你将剩下一个 ROOT 和两个孩子。

于 2013-09-13T10:31:56.453 回答