В производстве, Apache + mod_wsgi или Nginx + mod_wsgi?

Что использовать для приложения WSGI для среднего и большого python, Apache + mod_wsgi или Nginx + mod_wsgi?

Какая комбинация потребует больше памяти и процессорного времени?
Какой из них быстрее?
Что известно тем, что он более стабилен, чем другой?

Я также думаю использовать сервер CherryPy WSGI, но я слышал, что он не очень подходит для приложения с очень высокой нагрузкой, что вы знаете об этом?

Примечание: я не использовал Python Web Framework, я просто написал все это с нуля.
Примечание. Другие предложения также приветствуются.

Ответ 1

Для nginx/mod_wsgi убедитесь, что вы читаете:

http://blog.dscpl.com.au/2009/05/blocking-requests-and-nginx-version-of.html

Из-за того, что nginx является системой, управляемой событиями, она имеет поведенческие характеристики, которые наносят ущерб блокирующим приложениям, например, в случае приложений на основе WSGI. Хуже того, сценарий с многопроцессорной конфигурацией nginx может быть заблокирован, хотя некоторые рабочие процессы nginx могут быть бездействующими. Apache/mod_wsgi не имеет этой проблемы, поскольку процессы Apache будут принимать запросы только тогда, когда у них есть ресурсы для фактического обращения с запросом. Таким образом, Apache/mod_wsgi даст более предсказуемое и надежное поведение.

Ответ 3

Основное отличие состоит в том, что nginx построен для обработки большого количества подключений в гораздо меньшем объеме памяти. Это делает его очень подходящим для приложений, которые используют кометы, такие как соединения, которые могут иметь много незанятых открытых подключений. Это также дает ему довольно малую печать в области памяти.

С точки зрения производительности, nginx работает быстрее, но не так быстро, что я бы включил это как определяющий фактор.

Apache имеет преимущество в области доступных модулей и тот факт, что он довольно стандартный. Любой веб-хостинг, с которым вы работаете, будет установлен, и большинство техников будут очень хорошо знакомы с ним.

Кроме того, если вы используете mod_wsgi, это ваш сервер wsgi, поэтому вам даже не нужна вишня.

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

Ответ 4

Одна вещь, которую веб-сервер CherryPy делает для нее, - это чистый веб-сервер python (AFAIK), который может или не может упростить развертывание для вас. Кроме того, я мог видеть преимущества использования этого, если вы просто используете сервер для WSGI и статического контента.

(предупреждение о бесстыдном подключении: я написал код WSGI, который я собираюсь упомянуть)

Kamaelia будет поддерживать WSGI в следующей версии. Самое приятное в том, что вы, вероятно, сможете либо использовать предварительно сделанный, либо создать свой собственный, используя существующий код HTTP и WSGI.

(конец бесстыдной пробки)

С учетом сказанного, учитывая текущие параметры, я лично, вероятно, поеду с CherryPy, потому что он, кажется, самый простой для настройки, и я могу понять код python moreso, чем я могу понять код C.

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