如何防止mod_wsgi django应用程序重复加载?

shr*_*ddd 4 python apache django mod-wsgi

我的mod_wsgi django应用程序似乎一直在为客户端发出的前几个请求重新加载。这是我的表现

在足够的请求之后,它似乎会稳定下来,并且似乎不再需要重新加载该应用程序。关于为什么发生这种情况以及如何预防的任何想法?

(我在httpd.conf中有以下内容:MaxRequestsPerChild 0就是这样)

Gra*_*ton 5

这可能是因为您正在UNIX系统上使用mod_wsgi和Apache的嵌入式模式,甚至可能与Apache prefork MPM一起使用,这会使情况变得更糟。简而言之,在Apache的配置中,它是一个多进程Web服务器。结合默认情况下默认是在第一个请求上延迟加载应用程序这一事实,您会看到在应用程序加载时针对每个Apache服务器子进程的初始请求都有延迟。

即使对于Django框架,这也不应过分,并且会质疑您的特定应用程序在启动时在做什么,从而导致长时间的延迟或大的负载峰值。

要了解这些问题,请确保您阅读:

http://blog.dscpl.com.au/2009/03/load-spikes-and-excessive-memory-usage.html http://code.google.com/p/modwsgi/wiki/ProcessesAndThreading

然后更改为使用mod_wsgi的守护程序模式,而不是在mod_wsgi Wiki页面上记录。特别是从开始:

http://code.google.com/p/modwsgi/wiki/QuickConfigurationGuide

如果确实保证需要运行多个守护进程,而不仅仅是对应用程序将要获得的负载抱有希望,并且仍然担心加载时间,那么可以使用WSGIImportScript和其他方法配置mod_wsgi在任何请求进入之前在流程开始时预加载WSGI应用程序。但是对于Django,请确保您使用以下描述的WSGI脚本文件:

http://blog.dscpl.com.au/2010/03/improved-wsgi-script-for-use-with.html

而不是Django文档所描述的那种,因为它是缓慢加载的,您仍然可以看到问题以及WSGI托管机制与内置开发服务器之间的行为差​​异。