Хотя значение параметра «Процесс» равно 2, uWSGI запускает 3 процесса - PullRequest
0 голосов
/ 06 марта 2020

Я запускаю Flask приложение, используя uWSGI.

Я установил значение uWSGI «Процесс» равным 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

Ниже приведен файл INI UWSGI.

[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

Среда

  • Ubuntu 18.04
  • uWSGI 2.0.18
  • Python 3.7.5

Спасибо.

1 Ответ

0 голосов
/ 12 марта 2020

Была найдена роль трех порожденных процессов. Существует один главный процесс и два рабочих процесса.

Я нашел следующее в /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)

К сожалению, я не знаю, почему император имеет два процесса. Я не установил значение процессов для императора. В этом случае это то же значение, что и количество ядер ЦП?

...