Производительность конфигурации Apache для Django - PullRequest
2 голосов
/ 17 января 2012

У меня есть один Django-проект по стандартному плану webfaction (256 МБ ОЗУ). Среднее время загрузки моего сайта составляет около 4 секунд. Я настроил большинство настроек производительности в отношении Django (кеширование, сжатие, обслуживание статических файлов ...). Поэтому меня интересуют только улучшения конфигурации Apache. Требуется ли 4-секундная загрузка на веб-сайте с 200 КБ данных, требуется около 15 запросов на загрузку, лимит с веб-фракцией или я могу значительно улучшить это? Вот как сейчас выглядит мой 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? Заранее спасибо horndash

1 Ответ

4 голосов
/ 20 января 2012

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

Отключить Keep-Alive

Поддержание активности - это функция HTTP, которая позволяет обслуживать несколько запросов HTTP по одному TCP-соединению, избегая накладных расходов на установку / разрыв TCP.

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

...