mod_wsgi在启动时过慢?

时间:2010-03-03 02:26:23

标签: python django apache2 mod-wsgi

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

我有什么可以做的,不要让它在初次启动时变慢?这是一个常见问题,还是仅仅是我的配置问题?

2 个答案:

答案 0 :(得分:6)

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

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

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

顺便说一下,您是否尝试过一个简单的hello world WSGI程序来验证您的安装?请参阅“http://code.google.com/p/modwsgi/wiki/QuickConfigurationGuide”。你有没有试过一个空的Django网站,而不是真正的网站,看看它是否是你的变化?

答案 1 :(得分:0)

对此更加清楚。您不希望使用prefork MPM期间,它将为每个预分叉进程导致1x mod_wsgi进程。

解决此问题的最佳方法是使用worker 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 On WSGILazyInitialization关闭 WSGIDaemonProcess ABC.com user = apache group = apache display-name =%{GROUP} processes = 1 threads = 256 WSGIProcessGroup ABC.com