我使用uWSGI运行Flask应用。
我将uWSGI的“ Process”值设置为2。
但是,uWSGI启动了3个进程。
为什么?第三道工序做什么?
以下是执行service uwsgi status
的结果。
● uwsgi.service - uWSGI
Loaded: loaded (/etc/systemd/system/uwsgi.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2020-03-02 18:00:45 JST; 3 days ago
Main PID: 26656 (uwsgi)
Status: "The Emperor is governing 1 vassals"
Tasks: 5 (limit: 1103)
CGroup: /system.slice/uwsgi.service
tq11620 /usr/local/bin/uwsgi --ini app1.ini
tq14304 /usr/local/bin/uwsgi --ini app1.ini
tq26656 /usr/local/bin/uwsgi --emperor /etc/uwsgi/vassals --die-on-term --logto /var/log/uwsgi/emperor.log --logfile-chmod 640 --touch-logreopen /var/log/uwsgi/emperor.log.trigger
tq26664 /usr/local/bin/uwsgi --emperor /etc/uwsgi/vassals --die-on-term --logto /var/log/uwsgi/emperor.log --logfile-chmod 640 --touch-logreopen /var/log/uwsgi/emperor.log.trigger
mq26666 /usr/local/bin/uwsgi --ini app1.ini
我发现了两个皇帝进程和三个附庸国进程。
ps aux | grep uwsgi
的结果如下:
user 721 0.0 1.1 58456 11356 ? Ss 11:37 0:00 /usr/local/bin uwsgi --emperor /etc/uwsgi/vassals --die-on-term --logto /var/log/uwsgi/emperor.log --logfile-chmod 640 --touch-logreopen /var/log/uwsgi/emperor.log.trigger
user 795 0.0 0.2 52424 2540 ? S 11:37 0:00 /usr/local/bin uwsgi --emperor /etc/uwsgi/vassals --die-on-term --logto /var/log/uwsgi/emperor.log --logfile-chmod 640 --touch-logreopen /var/log/uwsgi/emperor.log.trigger
user 796 0.0 5.2 168676 52608 ? S 11:37 0:02 /usr/local/bin uwsgi --ini app1.ini
user 1056 0.0 5.3 173056 53444 ? S 11:37 0:04 /usr/local/bin uwsgi --ini app1.ini
user 1057 0.0 5.3 173136 53412 ? S 11:37 0:03 /usr/local/bin uwsgi --ini app1.ini
user 2602 0.0 0.0 14428 1000 pts/1 S+ 13:22 0:00 grep --color=auto uwsgi
我使用皇帝。
/usr/local/bin/uwsgi --emperor /etc/uwsgi/vassals --die-on-term --logto /var/log/uwsgi/emperor.log --logfile-chmod 640 --touch-logreopen /var/log/uwsgi/emperor.log.trigger
以下是uWSGI的INI文件。
[uwsgi]
base = /home/shizai/%n
chdir = %(base)
module = webapp.view:app
master = true
processes = 2
gevent = 1024
socket = /tmp/uwsgi_%n.sock
chmod-socket = 666
vacuum = true
die-on-term = true
logto = /var/log/uwsgi/%n.log
logfile-chmod = 640
touch-logreopen = /var/log/uwsgi/%n.log.trigger
log-encoder = format ${strftime:%%Y/%%m/%%d %%H:%%M:%%S} - ${msgnl}
ignore-sigpipe = true
ignore-write-errors = true
disable-write-exception = true
harakiri = 90
touch-reload = .uwsgi_touch
谢谢。
发现了三个衍生过程的作用。有一个主进程和两个工作进程。
我在/var/log/uwsgi/app1.ini中找到了以下内容:
2020/03/06 11:37:51 - spawned uWSGI master process (pid: 796)
2020/03/06 11:37:51 - spawned uWSGI worker 1 (pid: 1056, cores: 1024)
2020/03/06 11:37:51 - spawned uWSGI worker 2 (pid: 1057, cores: 1024)
不幸的是,我不知道为什么皇帝有两个过程。我尚未将进程的值设置为皇帝。在这种情况下,它与CPU内核数是否相同?