【问题标题】:uWSGI: --master with --emperor spawns two emperorsuWSGI: --master 和 --emperor 产生两个皇帝
【发布时间】:2013-02-09 21:21:58
【问题描述】:

我可以看到,如果我这样启动 uwsgi:

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

它创建一个皇帝副本。但如果我另外以--master 开头(推荐here),它会创建两个皇帝副本。将--master--emperor 一起使用是否有意义?我会说不,但如果我在没有该选项的情况下运行它,我会收到以下警告:

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

【问题讨论】:

    标签: uwsgi


    【解决方案1】:

    official documentation 是这样说的:

    皇帝一般不应该用--master运行,除非master 特别需要高级日志记录等功能。

    如果您想知道master 选项的作用,here 就是答案:

    主人

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

    所以,总结一下:

    • --master 用于通常的 uWSGI 实例,
    • 不要将--master 用于uWSGI Emperor。

    【讨论】:

    • 那么这是否意味着警告日志消息是没有根据的?
    • 我猜是的。也许 uwsgi 实例无法区分它是否被皇帝调用 - 我不知道。
    【解决方案2】:

    我不同意 - 文档说在生产中使用它不是一个好主意NOT;我想双重否定可以写得更清楚。

    因此,使用它似乎是个好主意,因此发出警告。

    【讨论】:

    • 据我了解,生产服务器不应该独立运行 uwsgi 实例——我的意思是,没有任何“监督者”。如果你运行“简单”的 uwsgi 实例,它只是一个实例——没有分叉/线程,如果它崩溃了,除了你会再次启动它。因此,您可以运行 uwsgi --master 来创建 uwsgi“监督者”,监督者将启动几个“简单”的 uwsgi 实例,具有分叉/线程和重启功能。
    • 然而,emperor 已经为它的所有 vassal 处理了分叉、线程和重启,所以不需要 --master。如果我错了,请纠正我。
    【解决方案3】:

    我想添加一些关于在皇帝手下运行的附庸使用 harakiri 模式的具体信息。如果 master 不在附庸国的配置中,则无论是否在 Emperor 配置中指定 master/harakiri 都将无效。给定一个示例皇帝配置:

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

    封臣需要以下条件才能使 harakiri 工作:

    [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
    

    请注意,master 和 harakiri 都存在于 vassal 中,并且在 Emperor 配置中设置它们对 uwsgi 版本 2.0.12 的 vassal 没有影响

    【讨论】:

      猜你喜欢
      • 2015-08-18
      • 2023-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-31
      • 2016-05-16
      相关资源
      最近更新 更多