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

mod_wsgi утечка памяти?

У меня есть приложение django, работающее через mod_wsgi на Apache 2 (Worker) за обратным прокси-сервером Nginx (также обслуживающим статический контент). Когда приложение начинает одновременно получать множество обращений, использование памяти резко возрастает с <20% до> 96%, и все приложение останавливается.

Вот мои конфигурации Apache WSGI:

WSGIDaemonProcess djangoboss user=django group=django processes=2 maximum-requests=500 threads=1 python-path=/home/django/django_env/lib/python2.6/site-packages display-name=%{GROUP}
WSGIProcessGroup djangoboss
WSGIScriptAlias / /home/django/django/wsgi/django_wsgi_handler.py

Вот вывод htop:

  PID USER     PRI  NI  VIRT   RES   SHR S CPU% MEM%   TIME+  Command                                                                                                                                           
29551 django      20   0  793M  745M  6868 R 61.0 42.8  1:28.65 (wsgi:djangoboss)   -k start                                                                                                                        
29550 django      20   0  793M  745M  6868 S  0.0 42.8  0:00.01 (wsgi:djangoboss)   -k start
29549 django      20   0  793M  745M  6868 S  0.0 42.8  0:00.00 (wsgi:djangoboss)   -k start
29548 django      20   0  793M  745M  6868 S  0.0 42.8  0:00.00 (wsgi:djangoboss)   -k start
30778 django      20   0  192M  176M  6356 S  0.0 10.2  0:12.15 /home/django/django_env/bin/python /home/django/django/manage.py post_content
27544 django      20   0 86028 43160  6892 S  0.0  2.4  0:00.01 (wsgi:djangoboss)   -k start
27545 django      20   0 86028 43160  6892 S  0.0  2.4  0:12.92 (wsgi:djangoboss)   -k start
27542 django      20   0 86028 43160  6892 S  0.0  2.4  0:00.00 (wsgi:djangoboss)   -k start
27543 django      20   0 86028 43160  6892 S  0.0  2.4  0:00.00 (wsgi:djangoboss)   -k start

Я пробовал балансировать нагрузку со вторым сервером Apache за Nginx, но это не помогло.

Сервер - Ubuntu 10.04 с apache / mod_wsgi / nginx, установленным из репозиториев ubuntu. Приложение Django работает на Django 1.2.

Любые идеи?

Я действительно сомневаюсь, что mod_wsgi протекает. Я предполагаю, что ты Django приложение утекает. Я лично никогда не находил никаких доказательств mod_wsgi утечка памяти, и я бегу с полдюжины mod_wsgi серверы.

Django - это совсем другая история. Это огромный проект, и в некоторых модулях будет утечка памяти. Но большинство (все?) Известные проблемы были исправлены в Django 1.1+.

Итак ... Я предполагаю, что что-то в вашем сценарии утекает. Вы запускаете какой-либо конкретный код, который может вызвать проблемы? Какой именно тест вы проводите? Полный тест сайта с чем-то вроде siege? Или простой тест на 1 странице с ab?

В любом случае, покажите код, который вы запускаете, и / или проверьте, есть ли у вас утечки памяти, с помощью чего-нибудь столь же простого:

def hello_world(request):
    return HttpResponse('Hello World!', mimetype='text/plain')