代码之家  ›  专栏  ›  技术社区  ›  AndrewF

重新加载mod\u wsgi守护程序时的停机时间?

  •  5
  • AndrewF  · 技术社区  · 14 年前

    我正在Apache上用mod\u wsgi运行一个Django应用程序。升级过程中是否会出现停机?

    http://code.google.com/p/modwsgi/wiki/ReloadingSourceCode . 大概,重新加载需要一些非零的时间。如果在重新加载过程中出现请求,会发生什么情况?Apache会将请求排队,然后在wsgi守护进程就绪后完成它吗?

    文件包括以下声明:

    因此,如果您在守护程序模式下使用Django,并且需要更改设置.py'文件,一旦进行了所需的更改,还可以触摸包含WSGI应用程序入口点的脚本文件。完成后,在下一个请求中,进程将重新启动,并重新加载Django应用程序。

    2 回复  |  直到 14 年前
        1
  •  18
  •   Graham Dumpleton    14 年前

    在daemon模式下,当触摸WSGI脚本文件以强制下载时,没有优雅重启的概念。也就是说,与Apache本身不同,Apache本身会在等待旧进程完成当前请求的同时启动新的Apache服务器子进程,而对于mod\wsgi守护进程,现有进程必须在新进程启动之前退出。

    然而,在规模的另一端,守护进程不能立即终止,因为这会导致当前请求中断。

    此关机超时时间默认为5秒。可以使用WSGIDaemonProcess指令的shutdown timeout选项覆盖它,但应适当考虑更改它的影响。

    因此,就这个特定问题而言,如果在触摸WSGI脚本文件之后第一个请求进入时,长时间运行的请求仍然处于活动状态,则存在活动的长时间请求将被中断的风险。

        2
  •  1
  •   poolie    14 年前

    不,不会有停机时间。使用旧代码的请求将完成,而新请求将使用新代码。

    随着新代码的加载,服务器上的负载会稍微增加一些,但除非应用程序非常庞大,而且服务器已经几乎过载,否则这是不明显的。

    apachectl graceful