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

Утечка памяти 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.

Есть идеи?

решение1

На самом деле у меня есть сомнения, что 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')

Связанный контент