Вопрос

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

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

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

Примечание . Я не использовал веб-платформу Python, я просто написал все с нуля.
Примечание. . Другие предложения также приветствуются.

Это было полезно?

Решение

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

Другие советы

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

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

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

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

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

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

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

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

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

(конец бесстыдного штекера)

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top