2010-08-28 24 views
7

Hay muchas maneras de implementar aplicaciones de Pylons. - La función de proxy a través de Apache o Nginx para pegar - Incorporación de la aplicación con mod_wsgi - el uso de algunos nginx nervioso + uwsgi combinado - y probablemente más ...¿Cuál es la mejor manera de implementar una aplicación Pylons?

He leído mucho acerca de los diferentes enfoques, pero no pudo realmente decida cuál elegir.

Proxying para pegar a través de nginx parece ser el método más fácil de configurar, pero ¿es eficiente? No pegar sería más lento que mod_wsgi o uswgi? Si es así, ¿el aumento del rendimiento vale la molestia?

Necesidad de algunos expertos para ayudar a elegir el mejor compromiso ... Quiero simplicidad, pero necesito decente (si no es de vanguardia) el rendimiento, y que, Obiwan Kenobi, eres mi única esperanza;)

Respuesta

1

La mejor respuesta es, depende.

Desde un punto de vista pura sencillez, apache2/mod_wsgi es probablemente el más fácil de manejar ya que tiene un grupo mucho mayor de personas que entienden Apache.

Desde el punto de vista del rendimiento, depende.

Si su aplicación es muy pesada en el marco y no muy estática (css, images) intensiva, la puerta de enlace entre el servidor web y los pilones es más probable que su cuello de botella y casi cualquier implementación pueda manejar eso.

La pasta es bastante rápida. Encontré que la interfaz de nginx/uwsgi es ligeramente más rápida que apache2/mod_wsgi. Los requisitos de memoria y rendimiento de archivos estáticos de nginx también favorecen a nginx.

Hay algunos sitios que he encontrado que hablan de ambos:

tonylandis.com/python/deployment-howt-pylons-nginx-and-uwsgi/ cd34.com/blog/programming/ python/torres-y-facebook-solicitud-diseño/ code.google.com/p/modwsgi/wiki/IntegrationWithPylons

Las comparaciones que he hecho están con apache2/mpm de trabajo en lugar de mpm-prefork como yo No necesitaba mod_php5 en mi configuración.

+0

Huh. La puerta de enlace entre el servidor web y Pylons prácticamente nunca sería el cuello de botella. La sobrecarga de los mecanismos de alojamiento, a excepción de CGI al menos, es tan mínima que en la práctica para un sistema real (no un programa hello world) va a haber poca diferencia entre los diferentes mecanismos de alojamiento. En cambio, el cuello de botella será la aplicación, los sistemas de renderizado y las bases de datos. No estoy seguro de lo que pretendía decir, pero en realidad no parece estar bien. –

2

Lo que quería decir es que si la aplicación es más dependiente marco de contenido estático dependiente, el factor limitante sería el servidor web -> framework y he encontrado diferencias insignificantes en el rendimiento de nginx -> uwsgi -> pilones y apache2/mpm-worker -> mod_wsgi -> pilones ya que el factor limitante es Pylons. Esto no quiere decir que Pylons es lento.

No importa el método de implementación que se utiliza con repoze.who/lo, me resultaba difícil de escalar últimos 280 solicitudes por segundo por núcleo de CPU.

@mkucharz, En cuanto a los resultados de rendimiento, los resultados son tres años y ni siquiera se acercan a las configuraciones existentes en la actualidad. Pylons 1.0 es aproximadamente 10% más rápido que 0.9, flup es mucho más maduro, y eso no prueba uwsgi o mod_wsgi. También usa Mighty en lugar de Mako, lo que también apunta a la edad de la prueba.

Las otras variables ocultas incluyen la versión de Python. En algunas distribuciones, he encontrado que Python 2.5 es un poco más rápido que Python 2.6 dependiendo de lo que hace la aplicación.

Aviso legal:

  • Torres de alta tensión no es lento.
  • Las diferencias de rendimiento de mod_wsgi y uwsgi son insignificantes en la configuración de producción.
  • El rendimiento del archivo estático de Nginx es mejor que apache.
  • Apache/mpm-worker es mucho más rápido que mod-prefork si mod_php no es necesario.
  • Casi cualquier implementación que usted entienda es probablemente suficiente para el 99% de las aplicaciones web que hay.
  • 99% de los puntos de referencia publicados no prueban correctamente un entorno. Golpear una página 10000 veces no es indicativo del rendimiento en el mundo real.
  • Tratar de ser útil cuando se publica tarde por la noche nunca funciona. Sabía que cuando vi esto en tweetdeck no debería haber dicho nada.
Cuestiones relacionadas