¿Django ha atendido más de 100.000 visitas diarias? [cerrado]
Estoy construyendo una aplicación web con Django. Las razones por las que elegí Django fueron:
- Quería trabajar con herramientas gratuitas/de código abierto.
- Me gusta Python y siento que es un lenguaje a largo plazo , mientras que con respecto a Ruby no estaba seguro, y PHP me pareció una gran molestia para aprender.
- Estoy construyendo un prototipo para una idea y no pienso demasiado en el futuro. La velocidad de desarrollo era el factor principal y ya conocí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 era "agradable".
Ahora que estoy cada vez más cerca de pensar en publicar mi trabajo, empiezo a preocuparme por la escala. La única información que encontré sobre las capacidades de escalamiento de Django la proporcionó el equipo de Django (no digo nada para ignorarlos, pero claramente esta no es información objetiva...).
¿Ha informado un equipo de desarrollo independiente sobre la construcción de un sitio basado en Django que maneja de manera confiable un exceso de 100.000 visitas diarias?
"¿Cuáles son los sitios más grandes creados con Django en la actualidad?"
No existe un solo lugar que recopile información sobre el tráfico en los sitios creados por Django, por lo que tendré que intentarlo utilizando datos de varias ubicaciones. Primero, tenemos una lista de sitios Django en la página principal del proyecto Django y luego una lista de sitios creados por Django en djangosites.org . Al revisar las listas y seleccionar algunas que sé que tienen un tráfico decente, vemos:
Instagram : lo que impulsa a Instagram: cientos de instancias, docenas de tecnologías .
Pinterest : Alexa ocupa el puesto 37 (21.4.2015) y 70 millones de usuarios en 2013
Bitbucket : 200TB de Código y 2.500.000 Usuarios
Disqus : Sirviendo a 400 millones de personas con Python .
curse.com : 600k visitas diarias .
tabblo.com : 44.000 visitas diarias , consulte las publicaciones de Ned Batchelder Infraestructura para sitios web modernos .
chesspark.com : Alexa clasifica alrededor de 179k.
pownce.com (ya no está activo): ranking de alexa alrededor de 65k. Mike Malone de Pownce, en su presentación en EuroDjangoCon sobre Scaling Django Web Apps dice "cientos de visitas por segundo". Esta es una muy buena presentación sobre cómo escalar Django y destaca algunos puntos positivos, incluidas las deficiencias (actuales) en la escalabilidad de Django.
HP construyó un sitio con Django 1.5: ePrint center . Sin embargo, en noviembre de 2015 se migró todo el sitio web y este enlace es solo una redirección. Este sitio web era un servicio mundial de suscripción a Instant Ink y servicios relacionados que HP ofrecía (*).
"¿Puede Django lidiar con 100.000 usuarios diarios, cada uno de los cuales visita el sitio durante un par de horas?"
Sí, ver arriba.
"¿Podría un sitio como Stack Overflow ejecutarse en Django?"
Mi intuición es que sí, pero, como respondieron otros y Mike Malone menciona en su presentación, el diseño de la base de datos es fundamental. También se pueden encontrar pruebas contundentes en www.cnprog.com si podemos encontrar estadísticas de tráfico confiables. De todos modos, no es algo que sucederá simplemente al reunir un montón de modelos de Django :)
Hay, por supuesto, muchos más sitios y bloggers de interés, ¡pero tengo que detenerme en alguna parte!
Publicación de blog sobre el uso de Django para crear un sitio de alto tráfico michaelmoore.com descrito como uno de los 10.000 sitios web principales . Estadísticas de Quantcast y estadísticas de competencia.com .
(*) El autor de la edición, incluida dicha referencia, solía trabajar como desarrollador subcontratado en ese proyecto.
Estamos haciendo pruebas de carga ahora. Creemos que podemos admitir 240 solicitudes simultáneas (una tasa sostenida de 120 visitas por segundo 24 horas al día, 7 días a la semana) 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 básico a medida que aumenta la carga.
Estamos utilizando Apache como front-end, Django y MySQL. El sistema operativo es Red Hat Enterprise Linux (RHEL). 64 bits. Usamos mod_wsgi en modo demonio para Django. No hemos optimizado la caché ni la base de datos más que aceptar los valores predeterminados.
Estamos todos en una máquina virtual en una Dell de 64 bits con (creo) 32 Gb de RAM.
Dado que el rendimiento es casi el mismo para 20 o 200 usuarios simultáneos, no necesitamos dedicar mucho tiempo a "ajustes". En lugar de eso, simplemente necesitamos mantener nuestro rendimiento base elevado mediante mejoras ordinarias de rendimiento de SSL, diseño e implementación de bases de datos ordinarias (indexación, etc.), mejoras ordinarias de rendimiento del firewall, etc.
Lo que sí medimos son nuestras computadoras portátiles de prueba de carga que luchan bajo la increíble carga de trabajo de 15 procesos que ejecutan 16 subprocesos simultáneos de solicitudes.