Pregunta ¿Escala Django? [cerrado]


Estoy construyendo una aplicación web con Django. Las razones por las que elegí a Django fueron:

  • Quería trabajar con herramientas gratuitas / de código abierto.
  • Me gusta Python y creo que es un lenguaje "a largo plazo", mientras que con respecto a Ruby no estaba seguro, y PHP parecía una gran molestia para aprender.
  • Estoy construyendo un prototipo para una idea y no estaba pensando demasiado en el futuro. La velocidad de desarrollo fue el factor principal, y ya conocía a Python.
  • Sabía que la migración a Google App Engine sería más fácil si decidiera hacerlo en el futuro.
  • Escuché que Django fue "agradable".

Ahora que me estoy acercando a la idea de publicar mi trabajo, empiezo a preocuparme por la escala. La única información que encontré sobre las capacidades de escalado de Django es proporcionada por el equipo de Django (no digo nada para ignorarlos, pero esta información claramente no es objetiva ...).

Mis preguntas:

  • ¿Cuál es el sitio "más grande" que se ha construido hoy en Django? (Mido el tamaño principalmente por tráfico de usuarios)
  • ¿Puede Django lidiar con 100,000 usuarios diariamente, cada uno visitando el sitio por un par de horas?
  • ¿Podría un sitio como Stack Overflow ejecutarse en Django?

904
2018-05-20 05:07


origen


Respuestas:


  1. "¿Cuáles son los sitios más grandes construidos en Django hoy?"

    No hay un solo lugar que recopile información sobre el tráfico en los sitios construidos por Django, así que tendré que probarlo usando datos de varias ubicaciones. Primero, tenemos una lista de sitios de Django en la página principal de la página principal del proyecto de Django y luego una lista de sitios construidos por Django en djangosites.org. Revisando las listas y escogiendo algunas que sé que tienen un tráfico decente, vemos:

  2. "¿Puede Django lidiar con 100.000 usuarios diariamente, cada uno visitando el sitio por un par de horas?"

    Sí, mira arriba.

  3. "¿Podría un sitio como Stack Overflow ejecutarse en Django?"

    Mi instinto me dice que sí, pero, como otros respondieron y Mike Malone menciona en su presentación, el diseño de la base de datos es crítico. También se pueden encontrar pruebas sólidas en www.cnprog.com si podemos encontrar estadísticas de tráfico confiables. De todos modos, no es solo algo que sucederá al juntar un montón de modelos de Django :)

Hay, por supuesto, muchos más sitios y bloggers de interés, ¡pero tengo que parar en alguna parte!


Publicación del blog sobre Usando Django para construir sitio de alto tráfico michaelmoore.com descrito como un 10 000 mejores sitios web. Quantcast stats y estadísticas de compete.com.


(*) El autor de la edición, incluida dicha referencia, solía trabajar como desarrollador subcontratado en ese proyecto.


709
2018-05-20 07:41



Estamos haciendo pruebas de carga ahora. Creemos que podemos admitir 240 solicitudes simultáneas (una tasa sostenida de 120 visitas por segundo 24x7) sin ninguna degradación significativa en el rendimiento del servidor. Eso sería 432,000 visitas por hora. Los tiempos de respuesta no son pequeños (nuestras transacciones son grandes) pero no hay degradación de nuestro rendimiento de línea de base a medida que aumenta la carga.

Estamos usando Apache front-ending Django y MySQL. El sistema operativo es Red Hat Enterprise Linux (RHEL). 64 bits Usamos mod_wsgi en modo daemon para Django. No hemos hecho ninguna optimización de caché o base de datos que no sea para aceptar los valores predeterminados.

Estamos todos en una VM en un Dell de 64 bits con (creo) 32Gb de RAM.

Dado que el rendimiento es casi el mismo para 20 o 200 usuarios simultáneos, no necesitamos gastar grandes cantidades de tiempo "ajustando". En su lugar, simplemente necesitamos mantener nuestro rendimiento base a través de las mejoras normales de rendimiento de SSL, el diseño e implementación de bases de datos ordinarias (indexación, etc.), las mejoras de rendimiento de cortafuegos normales, etc.

Lo que sí podemos medir son nuestras computadoras portátiles de prueba de carga que luchan bajo la carga de trabajo insana de 15 procesos que ejecutan 16 hilos de solicitudes simultáneos.


233
2018-05-20 11:16



No estoy seguro sobre el número de visitas diarias, pero aquí hay algunos ejemplos de grandes sitios de Django:

Screencast sobre cómo implementar django con la escala en mente http://ontwik.com/python/django-deployment-workshop-by-jacob-kaplan-moss/

Aquí hay un enlace a la lista de sitios de alto tráfico Django en Quora.


154
2017-11-16 04:00



¿Cuál es el sitio "más grande" que se ha construido hoy en Django? (Mido el tamaño principalmente por tráfico de usuarios)

En los EE.UU, Mahalo. Me dijeron que manejan aproximadamente 10 millones de únicos por mes.

En el exterior, el Globo red (una red de sitios de noticias, deportes y entretenimiento en Brasil); Alexa los clasifica entre los 100 mejores a nivel mundial (alrededor de 80 en la actualidad).

Otros usuarios notables de Django incluyen PBS, National Geographic, Discovery, NASA (en realidad varias divisiones diferentes dentro de la NASA) y la Biblioteca del Congreso.

¿Puede Django lidiar con 100 mil usuarios diariamente, cada uno visitando el sitio por un par de horas?

Sí, pero solo si ha escrito bien su aplicación y si tiene suficiente hardware. Django no es una bala mágica.

¿Podría un sitio como StackOverflow ejecutarse en Django?

Sí (pero mira arriba).

En cuanto a la tecnología, fácilmente: ver soclone por un intento. En lo que respecta al tráfico, compite con las estacas de StackOverflow en menos de 1 millón de ejemplares únicos por mes. Puedo nombrar al menos una docena de sitios de Django con más tráfico que SO.


93
2018-05-20 06:33



Jugando al abogado del diablo un poco:

Debes verificar DjangoCon 2008 Keynote, entregado por Cal Henderson, titulado "Por qué odio a Django", donde prácticamente repasa todo lo que Django no puede hacer en un sitio web de alto tráfico. Al final del día, debes tomar esto todo con la mente abierta porque es Es perfectamente posible escribir aplicaciones de Django que se escalen, pero pensé que era una buena presentación y relevante para su pregunta.


73
2018-05-21 01:36



Escalar aplicaciones web no se trata de marcos web o idiomas, se trata de su arquitectura. Se trata de cómo maneja su caché de navegador, su caché de base de datos, cómo utiliza proveedores de persistencia no estándar (como CouchDB), cuán afinada está tu base de datos y muchas otras cosas ...


57
2018-05-20 05:22



El sitio de django más grande que conozco es el El Correo de Washington, lo que indudablemente indicaría que poder escala bien

Las buenas decisiones de diseño probablemente tengan un mayor impacto en el rendimiento que cualquier otra cosa. Twitter se cita a menudo como un sitio que incorpora los problemas de rendimiento con otro marco web basado en lenguaje interpretado dinámico, Ruby on Rails; sin embargo, los ingenieros de Twitter han declarado que el marco no es un problema tanto como algunas de las elecciones de diseño de base de datos que hicieron en.

Django funciona muy bien con memcached y proporciona algunas clases para administrar el caché, que es donde resolverías la mayoría de tus problemas de rendimiento. Lo que entrega en el cable es casi más importante que su backend en realidad: usar una herramienta como yslow es fundamental para una aplicación web de alto rendimiento. Siempre puedes lanzar más hardware en tu back-end, pero no puedes cambiar el ancho de banda de los usuarios.


45
2018-05-20 06:27



Estuve en la conferencia EuroDjangoCon la otra semana, y este fue el tema de un par de charlas, incluso de los fundadores de lo que fue el sitio más grande de Django, Pownce (diapositivas de una charla) aquí) El mensaje principal es que no es Django el que tiene que preocuparse, sino cosas como el correcto almacenamiento en caché, el equilibrio de carga, la optimización de la base de datos, etc.

Django en realidad tiene ganchos para la mayoría de esas cosas: el almacenamiento en caché, en particular, se hace muy fácil.


27
2018-05-20 05:23



Estoy seguro de que está buscando una respuesta más sólida, pero la validación objetiva más obvia que puedo pensar es que Google impulsa a Django para su uso con su App Engine marco de referencia. Si alguien conoce y trata la escalabilidad de forma regular, es Google. Según lo que he leído, el factor más limitante parece ser el back-end de la base de datos, razón por la cual Google usa su propio ...


19
2018-01-10 21:29



Creo que también deberíamos agregar la aplicación del año de Apple para 2011, Instagram, a la lista que usa django intensivamente.


14
2018-04-25 15:32