Apache + mod_wsgi / Lighttpd + wsgi - я собираюсь увидеть различия в производительности? - PullRequest
3 голосов
/ 12 июня 2011

Я новичок в разработке с Python и собираю информацию, которая мне нужна, чтобы сделать разумный выбор в двух других открытых вопросах.(Это не дубликат.)

Я не занимаюсь разработкой с использованием фреймворка, а создаю веб-приложение с нуля, используя библиотеку Gevent.Что касается интерфейсных веб-серверов, кажется, у меня есть три варианта: nginx, apache и lighttpd.

Из всех прочитанных мной учетных записей mod_wsgi nginx не подходит.

Это оставляет два варианта - lighttpd и Apache.Под большой нагрузкой я увижу большие различия в характеристиках производительности и потребления памяти?У меня сложилось впечатление, что Apache склонен к жажде памяти, даже если не использует prefork, но я не знаю, насколько подходит lighttp для приложений Python.

Есть ли какие-либо предостережения или преимущества использования lighttpd перед apache?Я действительно хочу услышать всю информацию, которая может утомить меня!

Ответы [ 2 ]

5 голосов
/ 12 июня 2011

Apache ...

Apache, безусловно, является наиболее широко используемым веб-сервером.Что хорошо.Существует намного больше информации о том, как с этим что-то делать, и когда что-то идет не так, есть много людей, которые знают, как это исправить.Но это также самый медленный из коробки;требует много настроек и более мощный сервер, чем Lighttpd.В вашем случае будет намного проще начать работу с Apache и Python.Существует множество AMP-пакетов и множество руководств по настройке Python и обеспечению работы вашего приложения.Просто быстрый поиск в Google поможет вам в этом.Под большой нагрузкой Lighttpd затмит Apache, но Apache - это как поезд.Он просто продолжает пыхтеть.

Плюсы

  • Широкая база пользователей
  • Универсальная поддержка
  • Множество плагинов

Минусы

  • Медленно из коробки
  • Требуется настройка производительности
  • Память шлюхи (не так, как выможет заставить его работать на 64 МБ VPS)

Lighttpd ...

Lighttpd - новый ребенок в блоке.Он быстрый, мощный и пинает производительность (не говоря уже об использовании, как об отсутствии памяти).Из коробки Lighttpd вытирает пол с помощью Apache.Но не так много людей знают Lighttpd, поэтому заставить его работать сложнее.Да, это второй по популярности веб-сервер, но за ним не так много поддержки со стороны сообщества.Если вы посмотрите здесь, на stackoverflow, есть этот чувак, который продолжает спрашивать о том, как заставить работать его приложение Python, но никто ему не помог.При тяжелой нагрузке, при правильной настройке, Lighttpd превзойдет преформу Apache (некоторое время назад я провел несколько тестов, и вы можете увидеть увеличение производительности запросов на 200-300% в секунду).

Плюсы

  • Быстро из коробки
  • Использует очень мало памяти

Минусы

  • Не так много поддержки, как Apache
  • Иногда просто не работает

Nginx Если вы работалистатический сайт, тогда вы будете использовать nginx.Вы правы, говоря, что mod_wsgi nginx не подходит.

Заключение Преимущества?Есть оба веб-сервера;разработан, чтобы иметь возможность заменить друг друга.Если оба веб-сервера настроены правильно, и у вас достаточно оборудования, то использование одного другого над реальным преимуществом не имеет смысла.Вы должны попробовать и посмотреть, какой веб-сервер отвечает вашим потребностям, но спрашивает меня;Я бы сказал, пойти с Lighttpd.Это, на мой взгляд, проще в настройке и просто работает.

Кроме того, вы должны взглянуть на веб-сервер Cherokee.Безумно прост в настройке и производительность не наполовину плохая.И вы должны спросить об этом и при ошибке сервера.

1 голос
/ 12 июня 2011

То, что вы упомянули, gevent важно. Означает ли это, что вы специально пытаетесь реализовать приложение для длинных опросов? Если вы и эта функциональность составляют основную часть приложения, то вам нужно поместить свой сервер Gevent позади интерфейсного веб-сервера, который реализован с использованием асинхронных методов, а не модели процессов / потоков. Lighttd является асинхронным сервером и отвечает этим требованиям, а Apache - нет. Таким образом, использование Apache не подходит в качестве внешнего прокси-сервера для длинных опросов. Однако, если это и есть критерий, то на самом деле предложил бы использовать nginx, а не Lighttpd.

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

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

...