2013-08-08 12 views
3

Я получаю постепенное увеличение памяти с течением времени в Apache, выполняющем django/tastypie. Трафик действительно увеличивается, но я ожидаю постепенного уменьшения памяти с течением времени.Apache-память постепенно увеличивается с течением времени с помощью python/django/tastypie

<IfModule mpm_worker_module> 
StartServers   6 
MinSpareThreads  12 
MaxSpareThreads  24 
ThreadLimit   48 
ThreadsPerChild  24 
MaxClients   24 
MaxRequestsPerChild 0 
MaxMemFree   1024 
</IfModule> 

процесс демона:

WSGIDaemonProcess www.domain.com processes=24 threads=24 

Отчеты из Нью-Relic

enter image description here

enter image description here

испорчено ли мое мышление? Если память в конечном итоге конюшня и идет линейно, мне действительно все равно, если память освобождается со временем, пока она не пройдет определенный порог. У меня две машины с балансировкой нагрузки, и они оба одинаковы и делают то же самое.

Все работает отлично и очень быстро.

Спасибо, Марк

ответ

0

Один день исполнения с низким количеством запросов делает его трудно сказать, если вы утечки памяти. Для меня ваши графики выглядят разумными, но есть много переменных, поэтому трудно сказать наверняка.

Если вы обеспокоены утечками, вы можете попробовать использовать опцию WSGIDaemonProcess , чтобы перезапустить процессы после того, как они обслуживают многие запросы.

Кроме того, вам действительно нужны 24 процесса WSGI? Каждый из них будет иметь свой собственный интерпретатор python, и поэтому со временем будет потреблять 24 * (1 стек python/django/tastypie). Я бы предложил тестирование нагрузки и уменьшить количество процессов соответственно. Также посетите this post от Graham Dumpleton.

+0

Спасибо, графики в этой должности помощь в определении того, как работает процессы в резьб .. –

0

Ваша конфигурация демона Apache MPM и mod_wsgi довольно сильно нарушена. Я не могу дать подробный ответ прямо сейчас, поскольку я нахожусь в отпуске и уезжаю из дома, но я смотрю, как разговаривает с PyCon, и я попробую и последую за ним после того, как увижу, что вы это наблюдали, и попытались самостоятельно настроить свою конфигурацию и опубликовали следующую информацию здесь ,


UPDATE 1

Кстати, если вы посмотрите на доклад анализа мощности по Новой Relic для вашего фактического веб-приложения в качестве контролируемого агента New Relic Python, вы должен увидеть, как в использовании ваша емкость связана с верхним числом процессов/потоков, которые вы используете для демонского режима mod_wsgi. Более подробную информацию о докладе по анализу потенциала см:

+0

Я считаю, что я немного запутался когда конфигурация apache конкретного сайта выбрасывается в микс (например, WSGIDaemonProcess www.domain.com processes = 24 threads = 24).Я пониженные значения APACHE: StartServers 2 MinSpareThreads 25 MaxSpareThreads 50 ThreadLimit 50 ThreadsPerChild 25 MaxClients 75 MaxRequestsPerChild 0 MaxMemFree 1024, и я опустил файл WSGI в WSGIDaemonProcess api.chanj.com нити = 25 , Обратите внимание, что я не обслуживаю никаких статических файлов, и это единственный сайт на коробке. –

+0

Каковы недостатки запуска одного процесса через демона wsgi? –

+0

Чтобы прояснить, рабочий Apache обрабатывает прокси-сервер для процессов-демонов mod_wsgi, поэтому нет процессов точечной обработки * потоки группы процессов демона больше MaxClients Apache, поскольку рабочие процессы Apache никогда не смогут проксировать больше, чем запросы MaxClients на в то же время. Таким образом, все, что для группы процессов daemon выше MaxClients просто теряется впустую, и через постепенную активацию процессов/потоков со временем будет наблюдаться постепенное увеличение памяти до тех пор, пока она не выйдет на уровень стабильного состояния. –

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