1. Александр

    25.05.2010

    1 ↑
    1 ↓
    Коллеги, здравствуйте!

    Задача: обеспечить максимально стабильную и быструю работу приложения при большом числе одновременных запросов (приложение для соцсети)

    Статика сайта и базы на отдельных серверах.

    Варианты установки на сервер приложений (Django):
    а) nginx(proxy)+apache+mod_wsgi (рекомендуемый разработчиками Django)
    б) nginx(proxy)+cherokee+SCGI (самый простой) (поддержка SCGI в ngnx как я понимаю не полная, поэтому не без cherokee..)
    в) nginx+uWSGI
    г) nginx+mod_wsgi (была статья на хабре, собирается сложно: вручную там что-то патчится, не уверен, что хороший вариант..)
    [nginx как прокси тут предполагается использовать на всякий случай для статики админки и может чего ещё..]


    Интересует, какой из этих вариантов самый подходящий (то есть быстрый и стабильный под большими нагрузками). Cервер в hetzner.

    Склоняюсь к варианту "б" или "в".

    Поделитесь опытом, пожалуйста. Может быть, какие-то более выгодные варианты. (Варианты mod_python, fcgi и подобное как я понял несколько устарели.)

    Спасибо.
  2. Без знания специфики приложения невозможно ответить на этот вопрос.

    (Варианты mod_python, fcgi и подобное как я понял несколько устарели.)

    Вовсе нет.

  3. demalexx

    25.05.2010

    0 ↑
    0 ↓

    Вот там есть ссылки: http://web-brains.com/2010/05/05/podborka-ssylochek-pro-sposoby-zapuska-python-prilozhenij/

    И оттуда, в частности, очень подробный и хороший обзор большого кол-ва wsgi серверов: http://nichol.as/benchmark-of-python-web-servers

  4. Александр

    25.05.2010

    0 ↑
    0 ↓
    Александр, а что имеется ввиду под спецификой приложения? Просто обычная игра браузерная игра, персонажи дерутся, набирают опыт, а игроки смотрят бой через свои браузеры, распределяют очки опыта по скиллам у своих персонажей, смотрят топы, свои достижения, покупают всякие виртуальные шмотки для своих персонажей.. Везде где можно - хтмл, где нельзя - вставки на флэше.. Джанго

    demalexx, спасибо..

    Про wsgi-серверы я не до конца понял.. Их использование накладывает какие-либо ограничения на используемые компоненты Django?

    Я наткнулся на эту статью http://lincolnloop.com/blog/2009/sep/15/using-django-inside-tornado-web-server/ , почитал там комменты, слегка запутался.. Получается, что в Джанге есть какие-то ограничители, мешающие раскрыть весь потенциал wsgi? То есть HTTP запросы надо как-то по-другому реализовывать (не так как это сделано в Джанге), чтобы была выгода от использования wsgi? Не до конца понял, что там имелось ввиду..

    > The advantage of using Tornado is that it does non blocking IO, however a Django request is going to block for it’s entirety, so you really don’t get anything by using this.
  5. tug

    25.05.2010

    0 ↑
    0 ↓
    Сервер у вас наверное неплохой, так что на самом деле что больше нравится. Я бы поставил Apache + mod_wsgi, либо any-wsgi-server + nginx.

    Про Торнадо это не туда.
  6. ziro

    26.05.2010

    0 ↑
    0 ↓
    посмотрите на чироки - у него уже давно встроенная поддержка uWSGI. Вот здесь подробнее - http://fun-vit.blogspot.com/2009/11/cherokee-uwsgi-django-how-to.html
  7. Jury Koryakov

    26.05.2010

    0 ↑
    0 ↓
    Также не так давно задавался подобным вопросом. Сервер тоже на Hetzner.
    Выбрал Nginx для статики и Apache/mod_wsgi для динамики. Предварительное тестирование показало что я так и не увидел потолка при 8Гб ОЗУ. Всё работает довольно шустро. Пока даже не представляю себе какая должна быть нагрузка, чтобы эта связка упала. Разве что социальная сеть :)

    Подкупила великолепная документация по mod_wsgi и знакомство с Apache. Также подсмотрел у webfaction, они в качестве основных методов настройки Django на их shared серверах предлагают именно эту связку. Наверняка не с проста.
  8. admin

    26.05.2010

    0 ↑
    0 ↓

    Про wsgi-серверы я не до конца понял.. Их использование накладывает какие-либо ограничения на используемые компоненты Django?

    Скорее наоборот: ряд архитектурных особенностей django накладывает ограничения на её испольование в стеке wsgi. Существует неофициальный форк django, решающий часть проблем — twod.wsgi .

  9. Антон Соловых

    26.05.2010

    0 ↑
    0 ↓
    Связка Cherokee+uWSGI оставила положительные впечатления. Работает шустро, стабильно, да и по ресурсам не требовательная. Плюс, очень простая в настройке =)
  10. Александр

    26.05.2010

    0 ↑
    0 ↓

    Связка Cherokee+uWSGI оставила положительные впечатления. а вы не сравнивали с вариантом установки на nginx? http://www.westphahl.net/blog/2010/4/8/running-django-nginx-and-uwsgi/ если речь не идёт о статике, будет ли какая-нибудь разница?

    Ещё Cherokee по дефолту ставит джангу через SCGI (ну, там в админке есть мастер установки джанги), почему так, а не uWSGI? метод через SCGI более старый, а через uWSGI более современный? Или есть какая-то причина, по которой они не делают установку через uWSGI по умолчанию?

    ..

    Вообщем, как я понял, большой разницы между обозначенными мною вариантами нет и поэтому какие-то конкретные тесты никто из наших не проводил (то есть не делали сравнение всех вариантов (максимальное количество однвоременных подключений) на каком-нибудь тестовом проекте, сделав на него нагрузку)..

    Немного погуглив я наткнулся на такое сравнение: http://basicverbs.com/benchmark-of-django-deployment-techniques/ и такое http://www.peterbe.com/plog/fcgi-vs-gunicorn-vs-uwsgi

    Впрочем, есть мнение, что было бы неплохо провести своё сравнение и построить свои аналогичные графики, только не знаю - как создать нагрузку - как сделать все эти замеры.. - как сделать выводы по графикам использования памяти, на что там надо смотреть когда оцениваешь ( в первом сравнении )

    И, конечно, большое спасибо всем ответившим и тем, кто ещё ответит! :-)

  11. Если хотите заняться сравнением серьезно, то обязательно сходите перед этим по ссылкам:

  12. Антон Соловых

    27.05.2010

    0 ↑
    0 ↓
    а вы не сравнивали с вариантом установки на nginx?
    Сравнивал на одном из своих проектов. Результаты почти одинаковые, правда связка с nginx требует немного меньше памяти, но разница незначительная. Обе связки отлично выдерживают нагрузки.

    Считаю, они вполне сопоставимы, а выбор стоит делать лишь руководствуясь личными предпочтениями. Я выбрал Cherokee из-за хорошей админки, т.к. приходится иметь дело с большим количеством виртуальных хостов, а удобством пренебрегать не хотелось =)

Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.