我有两台服务器,分别有 django 0.9.6 和 1.0.2 两个版本。
对于一些较旧的站点(迁移仍在进行中),两者都被使用,现在人们已开始使用 1.0.2。
我在 RHEL 4 32 位服务器上有 apache 2.2.9 和 mod_python 3.3.1。
在一台服务器上,所有站点无论 django 版本如何都运行得非常快。
但是在第二个服务器站点中使用 django 1.0.2 的初始加载时间为 4-5 秒(在状态栏中等待站点....)。
所有缓存/压缩等均已完美完成。
我怀疑存在一些 mod_python/django 隔离问题,我的 apache Keep-Alive 处于开启状态。
但这两台服务器的 Apache 设置又很相似,所以现在对我来说真是疯狂。我甚至比较了所有文件权限/安装的库等。
请告知我该如何进行。
谨致问候 Debajit
答案1
Django 建议使用 mod_wsgi 进行生产安装。请参阅http://docs.djangoproject.com/en/dev/topics/install/#install-apache-and-mod-wsgi了解更多信息。也许你可以尝试一下这个 Apache 模块,看看问题是否仍然存在。
答案2
Apache/mod_python 在第一次请求时延迟加载 Django 应用程序,因此您的第一个请求将看到加载所有代码和初始化应用程序数据的延迟。
如果在 Apache 中使用 prefork MPM,这个问题会显得非常严重,因为需要将应用程序的加载放入更多进程中,因此会有更多的初始请求受到影响。
Apache/mod_wsgi 有同样的问题。如果这是一个问题,您需要配置应用程序的预加载。
有关使用 Apache/mod_python 的其他问题,请参见:
http://blog.dscpl.com.au/2009/03/load-spikes-and-excessive-memory-usage.html
答案3
首先请遵循 mod_wsgi 建议。
您还应确保不通过 mod_python 提供媒体。Apache 擅长提供静态文件,但您的解析器将做得很糟糕。Django 文档在这里。
您可以通过添加配置的净化副本来获得更详细的帮助。