В производстве Apache + mod_wsgi или Nginx + mod_wsgi? - PullRequest
62 голосов
/ 12 октября 2008

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

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

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

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

Ответы [ 4 ]

74 голосов
/ 24 июня 2009

Для 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 даст более предсказуемое и надежное поведение.

16 голосов
/ 03 января 2009

Автор nginx mod_wsgi объясняет некоторые отличия от Apache mod_wsgi в этом сообщении списка рассылки .

13 голосов
/ 13 октября 2008

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

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

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

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

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

7 голосов
/ 13 октября 2008

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

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

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

(конец бесстыдной заглушки)

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

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

...