Сайт Django очень медленно загружается после перезапуска или периода бездействия - PullRequest
3 голосов
/ 17 августа 2011

Я управляю сайтом Django на Apache и испытываю очень медленную начальную загрузку страниц после периода бездействия (около 1 часа). Я могу реплицироваться, оставив на час или подпрыгивая на сервере. После начальной загрузки страницы загружаются последовательно в течение <1 сек. </p>

Я предполагаю (догадываюсь), что проблема в том, что интерпретатор Python + модули Python снова загружаются в память после этих периодов бездействия?

Я следовал http://blog.dscpl.com.au/2009/03/load-spikes-and-excessive-memory-usage.html и выполняю mod_wsgi в режиме демона.

Конфигурация сервера:

Timeout 20
KeepAlive Off
MaxKeepAliveRequests 100
KeepAliveTimeout 15
ServerLimit 10

<IfModule mpm_prefork_module>
    StartServers          2
    MinSpareServers       2
    MaxSpareServers       2
    MaxClients            4
    MaxRequestsPerChild   0
</IfModule>

...

WSGIDaemonProcess django display-name=%{GROUP}
WSGIScriptAlias / /path/to/osqa.wsgi process-group=django application-group=%{GLOBAL}

Что-то явно не так с конфигурацией выше, или есть способ сохранить интерпретатор Python в памяти?

Возможно, это совсем другая проблема?

Спасибо

1 Ответ

0 голосов
/ 24 августа 2011

Несколько идей:

  • Убедитесь, что у вас достаточно памяти и что имеется свободный и исправный кэш диска. Вы должны иметь общее количество от 1 до 4 + ГБ, в зависимости от того, что вы делаете. Топ был упомянут, и я рекомендую htop: http://htop.sourceforge.net/
  • Увеличьте кеширование диска, если, например, вы используете виртуальную машину со слабым IO, например EC2 / EBS.
  • Настройте вашу базу данных на соответствующие значения в отношении памяти.
  • При кэшировании проверьте время ожидания, как указано выше. Если никто из посещающих в час кешей не истечет.
  • Настройте Linux (?) Для менее агрессивного обмена:
    • echo 20> / proc / sys / vm / swappiness
    • Постоянно: добавьте vm.swappiness в /etc/sysctl.conf
...