Назад | Перейти на главную страницу

ускорение сервера django

Моя установка - django 1.3 и пакеты mod_wsgi и apache по умолчанию для ubuntu 10.04. Я протестировал одно представление своего приложения на моей виртуальной машине разработки (DEBUG и панель инструментов отладки отключены):

ab -n 200 -c 5 http://127.0.0.1/

и получил 4 запроса в секунду. Это казалось медленным, поэтому я упростил запросы, использовал индексы и т.д. до такой степени, что панель инструментов отладки сообщила мне, что у меня есть 4 запроса, занимающие 8 мс. Выполняя тот же тест, я получаю только 8 запросов в секунду. Кажется, что процессор все время работает на 100%. Это кажется довольно медленным для того, что сейчас является довольно простым представлением, но это всего лишь маломощная виртуальная машина.

Я решил запустить большой экземпляр ec2 (4 процессора), чтобы посмотреть, какую производительность я получу на машине этого класса, и был удивлен, получив всего 13 запросов в секунду. Как я могу изменить конфигурацию apache / mod_wsgi, чтобы получить больше производительности от машин этого класса?

Я думаю, что использую worker, а не prefork:

$ /usr/sbin/apache2 -l
Compiled in modules:
  core.c
  mod_log_config.c
  mod_logio.c
  worker.c
  http_core.c
  mod_so.c

Моя рабочая конфигурация:

<IfModule mpm_worker_module>
    StartServers          2   
    MinSpareThreads      25  
    MaxSpareThreads      75  
    ThreadLimit          64  
    ThreadsPerChild      25  
    MaxClients          150 
    MaxRequestsPerChild   0   
</IfModule>

и мои настройки WSGI выглядят так:

WSGIScriptAlias / /home/blah/site/proj/wsgi.py
WSGIDaemonProcess blah user=blah group=blah processes=1 threads=10
WSGIProcessGroup blah

Большое спасибо за вашу помощь!

Увеличьте количество процессоров WSGIDaemonProcess как минимум в два раза и повторите попытку.