Frage Ist Django skalierbar? [geschlossen]


Ich baue eine Webanwendung mit Django. Die Gründe, warum ich Django gewählt habe, waren:

  • Ich wollte mit kostenlosen / Open-Source-Tools arbeiten.
  • Ich mag Python und fühle, dass es eine "Langzeit" -Sprache ist, während ich in Bezug auf Ruby nicht sicher war, und PHP schien mir ein riesiger Ärger zu sein.
  • Ich baue einen Prototyp für eine Idee und denke nicht zu viel über die Zukunft nach. Entwicklungsgeschwindigkeit war der Hauptfaktor und ich kannte Python bereits.
  • Ich wusste, dass die Migration auf Google App Engine einfacher wäre, sollte ich dies in Zukunft tun.
  • Ich hörte Django war "nett".

Jetzt, wo ich näher daran denke, über die Veröffentlichung meiner Arbeit nachzudenken, mache ich mir Sorgen über die Skalierung. Die einzige Information, die ich über die Skalierungsfähigkeiten von Django fand, liefert das Django-Team (ich sage nichts, um sie zu ignorieren, aber das ist eindeutig keine objektive Information ...).

Meine Fragen:

  • Was ist die "größte" Seite, die heute auf Django gebaut wird? (Ich messe Größe meistens durch Benutzerverkehr)
  • Kann Django täglich mit 100.000 Benutzern umgehen, von denen jeder die Seite für ein paar Stunden besucht?
  • Könnte eine Site wie Stack Overflow auf Django laufen?

904
2018-05-20 05:07


Ursprung


Antworten:


  1. "Was sind die größten Websites, die heute auf Django gebaut wurden?"

    Es gibt keinen einzigen Ort, an dem Informationen über den Verkehr auf Django-Baustellen gesammelt werden. Daher muss ich einen Blick darauf werfen, indem ich Daten von verschiedenen Standorten verwende. Zuerst haben wir eine Liste von Django-Sites auf der Titelseite von die Haupt-Django-Projektseite und dann eine Liste von Django gebauten Seiten bei djangosites.org. Wenn ich die Listen durchblättere und einige auswähle, von denen ich weiß, dass sie ordentlich Verkehr haben, sehen wir:

  2. "Kann Django täglich mit 100.000 Benutzern umgehen, von denen jeder für ein paar Stunden die Seite besucht?"

    Ja, siehe oben.

  3. "Könnte eine Site wie Stack Overflow auf Django laufen?"

    Mein Bauchgefühl ist ja, aber wie andere antworteten und Mike Malone in seinem Vortrag erwähnt, ist das Datenbankdesign entscheidend. Starke Beweise können auch unter www.cnprog.com gefunden werden, wenn wir zuverlässige Verkehrsstatistiken finden können. Wie auch immer, es ist nicht nur etwas, was passieren wird, wenn man einen Haufen Django-Modelle zusammenschmeißt :)

Es gibt natürlich noch viel mehr interessante Seiten und Blogger, aber ich muss irgendwo aufhören!


Blogpost über Mit Django eine Website mit hohem Traffic aufbauen michaelmoore.com beschrieben als a Top 10.000 Website. Quantcast Statistiken und compete.com Statistiken.


(*) Der Autor des Editiervorgangs, einschließlich eines solchen Verweises, wurde verwendet, um als ausgelagerter Entwickler in diesem Projekt zu arbeiten.


709
2018-05-20 07:41



Wir machen jetzt Lasttests. Wir denken, dass wir 240 gleichzeitige Anfragen (eine anhaltende Rate von 120 Treffern pro Sekunde 24x7) ohne signifikante Verschlechterung der Serverleistung unterstützen können. Das wären 432.000 Treffer pro Stunde. Die Antwortzeiten sind nicht gering (unsere Transaktionen sind groß), aber es gibt keine Verschlechterung unserer Baseline-Leistung, wenn die Last steigt.

Wir verwenden Apache Front-End Django und MySQL. Das Betriebssystem ist Red Hat Enterprise Linux (RHEL). 64-Bit. Wir verwenden mod_wsgi im Daemon-Modus für Django. Wir haben keine Cache- oder Datenbankoptimierung vorgenommen, außer die Standardwerte zu übernehmen.

Wir sind alle in einer VM auf einem 64-Bit-Dell mit (ich denke) 32 GB RAM.

Da die Leistung für 20 oder 200 gleichzeitige Benutzer fast gleich ist, müssen wir nicht viel Zeit für das "Tweaken" aufwenden. Stattdessen müssen wir unsere Basisleistung durch normale SSL-Leistungsverbesserungen, gewöhnliches Datenbankdesign und -implementierung (Indexierung usw.), normale Firewall-Leistungsverbesserungen usw. aufrechterhalten.

Was wir messen, sind unsere Lasttest-Laptops, die unter der wahnsinnigen Arbeitslast von 15 Prozessen leiden, die 16 gleichzeitige Threads von Anfragen ausführen.


233
2018-05-20 11:16



Nicht sicher über die Anzahl der täglichen Besuche, aber hier sind ein paar Beispiele für große Django-Sites:

Screencast zur Bereitstellung von Django mit Skalierung http://ontwik.com/python/django-deployment-workshop-by-jacob-kaplan-moss/

Hier ist ein Link zur Liste von stark frequentierte Django-Sites auf Quora.


154
2017-11-16 04:00



Was ist die "größte" Seite, die heute auf Django gebaut wird? (Ich messe Größe meistens durch Benutzerverkehr)

In den USA, Mahalo. Mir wurde gesagt, dass sie ungefähr 10 Millionen Uniques pro Monat handhaben.

Im Ausland, der Globo Netzwerk (ein Netzwerk von Nachrichten-, Sport- und Unterhaltungsseiten in Brasilien); Alexa zählt sie weltweit zu den Top 100 (derzeit etwa 80).

Andere bemerkenswerte Django-Benutzer gehören PBS, National Geographic, Discovery, NASA (eigentlich eine Reihe von verschiedenen Abteilungen innerhalb der NASA), und die Library of Congress.

Kann Django täglich mit 100.000 Nutzern umgehen, von denen jeder die Website für ein paar Stunden besucht?

Ja - aber nur, wenn Sie Ihre Anwendung richtig geschrieben haben und wenn Sie genug Hardware haben. Django ist keine magische Kugel.

Könnte eine Site wie StackOverflow auf Django laufen?

Ja (aber siehe oben).

Technologisch, leicht: sehen Soclone für einen Versuch. Traffic-bezogen konkurrieren StackOverflow Pegs unter 1 Million Uniques pro Monat. Ich kann mindestens zehn Django-Sites mit mehr Traffic als SO nennen.


93
2018-05-20 06:33



Teufels Anwalt ein wenig spielen:

Du solltest das überprüfen DjangoCon 2008 Keynote, geliefert von Cal Henderson, mit dem Titel "Warum ich Django hasse", wo er so ziemlich alles überfliegt, was Django vermisst, was man in einer stark frequentierten Website tun könnte. Am Ende des Tages muss man das alles mit Offenheit tun, weil es so ist ist perfekt möglich, Django-Apps zu schreiben, die skalieren, aber ich dachte, es war eine gute Präsentation und relevant für Ihre Frage.


73
2018-05-21 01:36



Bei der Skalierung von Web-Apps geht es nicht um Web-Frameworks oder -Sprachen, sondern um Ihre Architektur. Es geht darum, wie Sie mit Ihrem Browser-Cache verfahren, mit Ihrem Datenbank-Cache, wie Sie Nicht-Standard-Persistenz-Provider verwenden (wie z CouchDB), wie gut ist deine Datenbank und viele andere Sachen ...


57
2018-05-20 05:22



Die größte Django-Site, die ich kenne, ist die Washington Post, was sicherlich darauf hinweisen würde kann gut skalieren.

Gute Design-Entscheidungen haben wahrscheinlich einen größeren Einfluss auf die Performance als alles andere. Twitter wird oft als eine Seite zitiert, die die Performance-Probleme mit einem anderen dynamisch interpretierten sprachbasierten Web-Framework, Ruby on Rails, verkörpert - dennoch haben Twitter-Ingenieure festgestellt, dass das Framework nicht so sehr ein Problem ist als einige der Datenbankdesign-Entscheidungen, die sie früh getroffen haben auf.

Django funktioniert sehr gut mit memcached und bietet einige Klassen für die Verwaltung des Cache, wo Sie die meisten Ihrer Leistungsprobleme lösen würden. Was Sie auf dem Draht liefern, ist in der Realität fast wichtiger als Ihr Backend - ein Tool wie yslow ist entscheidend für eine leistungsstarke Webanwendung. Sie können immer mehr Hardware in Ihr Back-End werfen, aber Sie können die Bandbreite des Benutzers nicht ändern.


45
2018-05-20 06:27