【问题标题】:mod_wsgi excessively slow at startup?mod_wsgi 启动时速度过慢?
【发布时间】:2023-03-19 21:25:01
【问题描述】:

我正在开发一个用于生产的 django 网站,它使用 mod_wsgi - 几乎没有任何访问者,所以无论何时我访问它似乎 mod wsgi 都会启动并打开 python 进程 - 它需要大约 1-2 分钟才能完全加载.

有什么办法可以不让它在初始启动时变慢吗?这是一个常见问题还是只是我的配置问题?

【问题讨论】:

    标签: python django apache2 mod-wsgi


    【解决方案1】:

    即使您使用了使用嵌入式模式和 Apache prefork MPM 的次优配置,也不会花费那么长时间。不过,如果您将 Apache 进程的 MaxRequestsPerChild 设置为 1,可能会使事情变得更糟。

    建议是,确保您使用 mod_wsgi 守护程序模式并使用单个多线程进程运行(WSGIDaemonProcess 的默认设置)。这将确保至少有一个 Django 实例,而不是每个 Apache 服务器进程可能有一个。

    作为对您正在做的事情的确认,编辑您的问题并发布您当前 Apache 配置的 sn-p,展示如何设置 mod_wsgi 位。还包括您使用的是 Apache prefork 还是 worker MPM,可通过运行“httpd -V”以及您使用的平台来确定。

    顺便说一句,您是否尝试过一个简单的 hello world WSGI 程序来验证您的安装?请参阅“http://code.google.com/p/modwsgi/wiki/QuickConfigurationGuide”。您是否尝试过使用一个空的 Django 站点,而不是您的真实站点来查看是否是您的更改?

    【讨论】:

      【解决方案2】:

      对此有更多的了解。您不想使用 prefork MPM 周期,这将导致每个 pre-fork 进程的 1x mod_wsgi 进程。

      解决这个问题的最好方法是使用工作 MPM 在守护模式下运行 WSGI 进程。

      https://docs.djangoproject.com/en/dev/howto/deployment/wsgi/modwsgi/#using-mod-wsgi-daemon-mode

      编辑:

      另请注意,您必须指定组,否则每个 HTTPD 进程似乎都会在所有连接关闭后创建自己的 mod_wsgi 进程。

      WSGIScriptAlias / /usr/local/apache2/htdocs/ABC.com/build/wsgi.py WSGIPassAuthorization 开启 WSGILazy初始化关闭 WSGIDaemonProcess ABC.com 用户=apache 组=apache 显示名称=%{GROUP} 进程=1 线程=256 WSGIProcessGroup ABC.com

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-30
      • 2021-08-31
      • 2014-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-16
      • 1970-01-01
      相关资源
      最近更新 更多