2012-01-17 4 views
2

У меня есть один Django-проект на стандартном веб-плане (256mb ram). Среднее время загрузки моего сайта составляет около 4 секунд. Я настроил большую часть настроек производительности в Django (кеширование, сжатие, обслуживание статических файлов ...). Поэтому меня интересуют улучшения конфигурации Apache. Время загрузки 4 секунды на веб-сайте с 200 КБ данных, для чего требуется около 15 запросов на загрузку, лимит с webfaction или я могу улучшить это значительно? Это то, что моя httpd.conf выглядит как прямо сейчас:Производительность конфигурации Apache для django

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 увеличить производительность? Заранее спасибо horndash

ответ

4

Нет, нет, нет. KeepAlive и Django не играют хорошо вместе. Цитата из книги Джанго here:

Выключите Keep-Alive

Keep-живой является особенностью HTTP, что позволяет несколько запросов HTTP, чтобы быть поданы в течение одного соединения TCP, избегая настройки TCP/накладные расходы Teardown ,

Это звучит хорошо на первый взгляд, но на самом деле может убить производительность сайта Django. Если вы должным образом обслуживаете носители с отдельного сервера, каждый пользователь, просматривающий ваш сайт, будет на самом деле только страницей с вашего сервера Django каждые 10 секунд. Это приводит к тому, что HTTP-серверы ждут следующего запроса keep-alive, а простой HTTP-сервер просто потребляет оперативную память, которую должен использовать активный.

+0

спасибо tttallis. я играл с предпочтениями и тестировал большинство из них. вы правы. keepalive и django не играют хорошо вместе! – horndash

+0

Является ли KeepAlive Off по-прежнему действительным вариантом сегодня? – panosl

Смежные вопросы