Frage

Ich habe ein ziemlich kleines Website läuft auf Django (ca. 4,5 KB pro Tag Seiten), mit PostgreSQL 8.3 als db.

Ich bin mit der Datenbank als auch den Cache und dem sesssion Backend. Ich habe viele gute Dinge gehört über die Verwendung von Memcached für diesen Zweck, und ich würde es auf jeden Fall gerne einen Versuch geben. Ich möchte jedoch genau wissen, was die Vorteile einer solchen Änderung wäre: Ich stelle mir vor, dass meine Seite sein kann einfach nicht groß genug für die bessere Cache-Backend, um einen Unterschied zu machen. Der Punkt ist:. Es würde mir nicht sein, würde die Installation und Memcached Konfiguration und will ich nicht jemandes Zeit für nichts verschwenden oder nur sehr wenig

Wie kann ich den Aufwand durch Verwendung des db als Cache-Backend eingeführt messen? Ich habe in django-Debug-Toolbar gesucht, aber wenn ich das richtig verstehen es ist nicht etwas, das Sie möchten auf einem Produktionsstandort setzen (Sie haben DEBUG=True einstellen, damit es funktioniert). Leider kann ich nicht ganz die Produktion Einstellung auf meinem Laptop reproduzieren (ich habe ein anderes Betriebssystem, CPU und viel mehr RAM).

Hat jemand anders Django Cache / Session Backends gebenchmarkt? Weiß jemand, was die Performance-Unterschied wäre, wenn ich tat, zum Beispiel eine sitzungs schreiben auf jede Anfrage?

War es hilfreich?

Lösung

Bei meiner früheren Arbeit haben wir versucht, Caching Auswirkungen vor Ort zu messen wir der Entwicklung wurde. Auf der gleiche Maschine, die wir den Satz von 10 Seiten laden geprüft, die am häufigsten als Startseiten (Objektlisten), sowie einige Objekte Detailseiten aus dem Pool von ~ 200000 zufällig genommen verwendet werden. Der Unterschied war, wie 150 Anfragen / Sekunde bis 30.000 Anfragen / Sekunde und die Datenbankabfragen sank auf 1-2 pro Seite.

Was wurde im Cache gespeichert:

  • Sitzungen
  • Listen von Objekten für jede einzelne Seite in Objekt abgerufen Auflistung
  • sekundäre Objekte und gemeinsame Inhalte (auf jeder Seite gefunden)
  • Listen von Objektkategorie und andere Kategorisieren Eigenschaften
  • Indikatoren (berechnet offline von Cron-Job)
  • einzelne Objekte

In der Regel haben wir nur Low-Level-granulares Caching, nicht der High-Level-Cache-Framework. Es bedurfte sehr sorgfältiges Design (Cache richtig auf jede Datenbank Zustandsänderung für ungültig erklärt werden mußte, wie das Hinzufügen oder Ändern jedes Objekt).

Andere Tipps

Die DiskCache Projekt veröffentlicht Django Cache Benchmarks lokalen Speicher zu vergleichen, Memcached, Redis, Datei-basierte, und diskcache.DjangoCache . Ein zusätzlicher Vorteil der DiskCache ist, dass kein separater Prozess erforderlich ist (im Gegensatz zu Memcached und Redis). Stattdessen Cache Schlüssel und kleine Werte sind Memory-Mapped in den Django Prozessspeicher. Werte aus dem Cache Abrufen ist in der Regel schneller als Memcached auf localhost. Eine Reihe von Einstellungen , wie viele Daten steuern im Speicher gehalten werden; der Rest auf der Festplatte ausgelagert werden.

Kurze Antwort: Wenn Sie enougth ram haben, Memcached immer schneller. Sie können wirklich nicht Memcached vs. Datenbank-Cache benchhmark, nur im Kopf behalten, dass der große Engpass mit Servern Plattenzugriff ist, speziell Schreibzugriff.

Wie auch immer, Festplatten-Cache ist besser, wenn Sie viele Objekte cachen und langen Zeitablauf. Aber für diese Situation, wenn du Konzertaufführungen wollen, ist es besser, Ihre Seiten statisch mit einem Python-Skript zu generieren und liefern sie mit ligthtpd oder nginx.

Für Memcached, können Sie die Größe des RAM einstellen, um den Server gewidmet ist.

Probieren Sie es aus. Verwenden Sie Firebug oder ein ähnliches Werkzeug und führt memcache mit einem wenig RAM-Zuweisung (zum Beispiel 64 MB) auf dem Testserver.

Markieren Sie Ihre durchschnittliche Lade Ergebnisse in Firebug gesehen ohne memcache, dann drehen Sie das Caching auf und neue Ergebnisse markieren. Das ist so einfach getan, wie es gesagt hat.

Die Ergebnisse in der Regel Schocks Menschen, weil die perfomance sehr schön aufrichtet.

Verwenden Sie django-Debug-Toolbar , um zu sehen, wie viel Zeit wurde auf gespeicherte SQL Abfrage

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top