django - Django 的 Apache 配置性能

标签 django performance apache httpd.conf

我在标准 webfaction 计划(256mb ram)上有一个 Django 项目。我的网站的平均加载时间约为 4 秒。我配置了有关 Django 的大部分性能调整(缓存、压缩、提供静态文件...)。所以我只对 Apache 配置的改进感兴趣。在具有 200kb 数据的网站上加载时间为 4 秒,需要大约 15 个请求才能加载,这是 webfaction 的限制还是我可以显着改善这一点?这就是我的 httpd.conf 现在的样子:

ServerRoot "/home/XXXXXX/webapps/XXXXXX/apache2"

LoadModule dir_module        modules/mod_dir.so
LoadModule env_module        modules/mod_env.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule mime_module       modules/mod_mime.so
LoadModule rewrite_module    modules/mod_rewrite.so
LoadModule setenvif_module   modules/mod_setenvif.so
LoadModule wsgi_module       modules/mod_wsgi.so
#LoadModule headers_module       modules/mod_headers.so

LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
KeepAlive Off
Listen 28010
MaxSpareThreads 3
MinSpareThreads 1
ServerLimit 1
SetEnvIf X-Forwarded-SSL on HTTPS=1
ThreadsPerChild 15
WSGIDaemonProcess XXXX processes=15 python-path=/.../lib/python2.6 threads=8
WSGIPythonPath /home/XXXX/webapps/XXXXX:/home/XXXX/webapps/XXXXXX/lib/python2.6
WSGIScriptAlias / /home/XXXXXX/webapps/XXXXXX/XXXXXX.wsgi

像 KeepAlive On 这样的东西会提高性能吗? 预先感谢霍恩达什

最佳答案

不,不,不。 KeepAlive 和 Django 不能很好地协同工作。引用 Django 书中的内容 here :

关闭保持事件状态

Keep-alive 是 HTTP 的一项功能,允许通过单个 TCP 连接处理多个 HTTP 请求,从而避免 TCP 设置/拆卸开销。

乍一看这听起来不错,但实际上会降低 Django 站点的性能。如果您从单独的服务器正确地提供媒体,则每个浏览您网站的用户实际上最多每 10 秒只会看到来自 Django 服务器的页面。这使得 HTTP 服务器等待下一个保持事件请求,并且空闲的 HTTP 服务器只会消耗事件服务器应该使用的 RAM。

关于django - Django 的 Apache 配置性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8892934/

相关文章:

Django ModelForm 将数据添加到上下文

apache - 在 apache 后面的乘客 w/nginx 上运行的 Rails 应用程序中没有获取 REMOTE_USER header

Django 抽象模型 + DB 迁移 : tests throw "cannot ALTER TABLE because it has pending trigger events"

django - 你如何使用 Django URL 命名空间?

c# - 为什么 LZMA SDK (7-zip) 这么慢

sql - 避免基于递增键创建聚集索引

java - JPA/hibernate 性能

php - .htaccess mod_rewrite 错误

php - 设置 apache RewriteMap 以从数据库中提取的正确方法是什么? (PHP/APACHE/MySQL)

django - 在 Django 中的 M2M 关系上使用 'through' 参数的原因