web-dev-qa-db-ja.com

uWSGI:-master with --emperorは、2人の皇帝を生み出します

このようにuwsgiを起動すると、次のことがわかります。

Sudo /usr/local/bin/uwsgi --emperor /etc/uwsgi/vassals --uid www --gid www

それは1つの皇帝のコピーを作成します。しかし、さらに--masterで開始すると(推奨されるように ここ )、2つの皇帝のコピーが作成されます。 --master--emperorと一緒に使用することは意味がありますか?いいえと言いますが、そのオプションなしで実行すると、次の警告が表示されます。

*** WARNING: you are running uWSGI without its master process manager ***

29
clime

これが 公式ドキュメント の内容です:

高度なロギングなどのマスター機能が特に必要でない限り、皇帝は通常--masterを使用して実行しないでください。

masterオプションが何をするのか疑問に思っているなら、 ここ が答えです:

主人

uWSGIの組み込みのプリフォーク+スレッドマルチワーカー管理モード。マスタースイッチをオンにすることでアクティブになります。すべての実用的なサービング展開では、マスターモードを使用しないことは実際には良い考えではありません。

したがって、要約すると:

  • 使用する --master通常のuWSGIインスタンスの場合、
  • 使用禁止 --masteruWSGIエンペラーの場合。
36
MrKsn

私は同意しません-ドキュメントにはそれは良い考えではないと書かれています[〜#〜] not [〜#〜]とにかく本番環境でそれを使用すること。二重否定はもっと明確に書くことができると思います。

したがって、IS使用することをお勧めします。したがって、警告が表示されます。

3
Tom T.

皇帝の下で家臣に切腹モードを使用するためのいくつかの具体的な情報を追加したいと思います。家臣の構成にマスターが含まれていない場合、皇帝の構成でマスター/ハラキリが指定されているかどうかに関係なく、ハラキリは効果がありません。皇帝の設定の例を考えると:

[uwsgi]
emperor = ...
daemonize = ...
emperor-pidfile = ...
vassal-set = enable-metrics=1
emperor-stats = 127.0.0.1:6000

家臣は、切腹が機能するために以下を必要とします:

[uwsgi]
strict
processes = 4
stats = 127.0.0.1:5000
memory-report
daemonize = ...
pidfile = ...
close-on-exec
py-tracebacker = /tmp/tbsocket
master
harakiri = 5
harakiri-verbose

マスターとハラキリは両方とも家臣に存在し、皇帝の設定でそれらを設定しても、uwsgiバージョン2.0.12の家臣には影響しないことに注意してください。

0
Paul