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

Существуют ли накладные расходы на мониторинг / обслуживание при использовании nginx + uwsgi по сравнению с apache + mod_wsgi?

Мы стремимся использовать nginx + uwsgi для приложений на основе django, так как мы хотим попробовать более новые решения и хорошо слышали о том, что nginx менее ресурсоемкий, чем apache.

Прочитав несколько мнений одного из создателей Django об apache на Quora:

http://www.quora.com/What-web-server-suits-Django-best

I'm still a big fan of a stripped down Apache+mod_wsgi running behind nginx.    
Nginx handles static files, gzip, trickling to slow clients, load balancing and 
having  a configuration language that's actually pleasant to work with.    
Apache just sits there serving up dynamic Python pages via mod_wsgi, using the 
shortest  possible config.The reason I like Apache for this is I don't need to
babysit the process at all, unlike if I was using FastCGI or running a separate
Python app server.

Я не собираюсь настраивать 2 веб-сервера для разных целей, я был бы более счастлив, если бы только nginx выполнял всю работу вместе с uwsgi для django. У меня несколько вопросов:

Часть "присмотра за детьми" - это запуск процессов uWSGI / gunicorn вручную (с помощью таких инструментов, как supervisor, monit или простые сценарии rc).

Более года назад uWSGI решил эту «проблему» с uWSGI Emperor, который очень легко будет присматривать за экземплярами (просто перетащите файлы конфигурации в каталог). Таким образом, для одной установки требуется сценарий запуска для nginx и один для apache, в то время как для другого требуется один для nginx и один для uWSGI Emperor (так что у нас 2: 2).

Что касается поддержки uwsgi в nginx, это связано с «протоколом uwsgi», а не с сервером приложений uWSGI. Это более простой транспорт, чем http, поэтому он может принести некоторый выигрыш в производительности и добавить некоторые специфические функции (например, прямую передачу переменных WSGI). Вы не обязаны использовать протокол uwsgi, вы можете просто запустить uWSGI в режиме http (как gunicorn) и обычно проксировать его.

Сказав это, примите во внимание, что текущая база кода python uWSGI очень похожа на mod_wsgi (автор mod_wsgi очень помог исправить ошибки uWSGI python), поэтому, если вам не нужны определенные функции uWSGI, вы не получите особых преимуществ перед действительно урезанный apache + mod_wsgi.