我在标准 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/