【问题标题】:Django App is laggy when Apache2 is used vice development server使用 Apache2 副开发服务器时 Django 应用程序滞后
【发布时间】:2013-04-08 14:50:26
【问题描述】:

设置是:

  1. Windows XP 虚拟机(暂时受此困扰 - 我们在 Intranet 上)
  2. 阿帕奇 2,
  3. mod_wsgi
  4. django 1.4
  5. 虚拟环境
  6. 我们最多只有两个用户同时使用这个应用程序

一切正常,但在浏览器的请求和服务器发回的响应之间存在明显的延迟(10-20 秒)。

如果我用 Django 开发服务器(我不想在生产中这样做)替换 Apache2 Web 服务器,那么应​​用程序的响应速度非常快。所以我的假设是问题出在 Apache2 配置或 mod_wsgi 配置上。

我不是 Apache 专家,我花了数小时寻找正确的设置来配置 Apache2 Web 服务器,但未能找到任何可以改善响应的方法。

任何帮助将不胜感激。

以下是我已更改或添加到 httpd.conf 的设置:

# ThreadsPerChild: constant number of worker threads in the server process
ThreadsPerChild 10
# Changed MaxRequestsPerChild 0 to 1 for Django
MaxRequestsPerChild  1
# For Django KeepAlive should be OFF
KeepAlive Off

WSGIApplicationGroup %{GLOBAL}
#######################################
WSGIScriptAlias / "C:/virtual_env/sitar_env2/cissimp/cissimp/wsgi.py"
WSGIPythonPath C:/virtual_env/sitar_env2/Lib/site-packages;C:/virtual_env/sitar_env2/cissimp
Alias /static "C:/virtual_env/sitar_env2/cissimp/cissimp/static"
<Directory "C:/virtual_env/sitar_env2/cissimp/cissimp">
<Files wsgi.py>
Order allow,deny
Allow from all
</Files>
</Directory>
##########################################

【问题讨论】:

  • 这里有很多可能的问题,但常见的问题是一些名称解析问题。您是否尝试设置 ServerName apache 指令?从服务器机器访问 webapp 时是否会出现问题?从另一个?来自两者?

标签: django apache windows-xp mod-wsgi


【解决方案1】:

不要设置:

MaxRequestsPerChild  1

您实际上是在对每个请求重新启动 Apache,这意味着必须在每个请求上加载整个 Django 应用程序。你不应该那样做。

【讨论】:

  • 根据我的阅读,这是 Django 的推荐设置。您是否建议这样做是因为我使用的是 Windows?你能推荐合适的设置吗?
  • 将 MaxRequestsPerChild 设置为 1 绝对不是 Apache 推荐的设置。即使对于开发来说,这也不是一个好主意。你在读什么说要这样做。阅读blog.dscpl.com.au/2008/12/…blog.dscpl.com.au/2009/02/…code.google.com/p/modwsgi/wiki/ReloadingSourceCode
  • 非常感谢格雷厄姆。我查看了您的博客并将 MaxRequestsPerChild 设置为 0 并且性能确实有所提升。该设置是 Django 文档中 mod_python 建议配置的保留。
猜你喜欢
  • 2016-03-30
  • 1970-01-01
  • 2021-08-28
  • 1970-01-01
  • 2015-10-02
  • 2022-11-12
  • 2016-01-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多