2010-03-03 80 views
4

我正在开发一个django网站,用于生产使用mod_wsgi - 几乎没有任何访问者,所以我每次访问它似乎mod wsgi启动并打开python进程 - 大约需要1-2分钟完成加载。mod_wsgi在启动时过度缓慢?

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

回答

6

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

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

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

顺便说一句,你有没有尝试过一个简单的世界WSGI程序来验证你的安装?参见'http://code.google.com/p/modwsgi/wiki/QuickConfigurationGuide'。您是否尝试过使用空的Django网站,而不是真正的网站来查看它是否是您的更改?

0

只是在这个更多的光。您不想使用prefork MPM周期,它会为每个预分叉的进程导致1x mod_wsgi进程。

解决此问题的最佳方法是使用worker MPM以Daemon模式运行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论 WSGILazyInitialization关 WSGIDaemonProcess ABC.com用户=阿帕奇组= apache的显示名称=%{GROUP}过程= 1个线程= 256 WSGIProcessGroup ABC.com

+0

此博客文章中还讨论了http://blog.dscpl.com.au/2012/10/why-are-you-using-embedded-mode-of。 HTML和这个视频https://www.youtube.com/watch?v=k6Erh7oHvns – 2016-12-16 01:18:17