2010-12-20 5 views
98

Ich versuche, meinen Benchmark (3-Tier-Webarchitektur) zu beschleunigen, und habe allgemeine Fragen zu Memcache (d) und Varnish.Memcache (d) vs. Varnish zur Beschleunigung der 3-Tier-Webarchitektur

  • Was ist der Unterschied?
    Es scheint mir, dass Varnish hinter dem Webserver ist, Zwischenspeichern von Webseiten und erfordert keine Änderung im Code, nur Konfiguration.
    Auf der anderen Seite, Memcached ist Caching-System für allgemeine Zwecke und meist zum Zwischenspeichern von Ergebnissen aus der Datenbank und erfordert Änderung in get Methode (erste Cache-Lookup).

  • Kann ich beides verwenden? Varnish im vorderen Web-Server und Memcached für Datenbank-Caching?

  • Was ist eine bessere Option?

    (Szenario 1 - meist schreiben,
    Szenario 2 - meist lesen,
    Szenario 3 - Lese- und Schreib ähnlich ist)

Antwort

249
  • Lack wird vor dem Webserver; Es funktioniert als Reverse-HTTP-Proxy, der zwischenspeichert.
  • Sie können beide verwenden.
  • Meistens schreiben - Varnish muss betroffenen Seiten gereinigt haben. Dies führt zu einem Overhead und wenig Nutzen für geänderte Seiten.
  • Meist gelesen - Varnish wird wahrscheinlich das meiste davon abdecken.
  • Ähnliche lesen & schreiben - Varnish wird eine Menge der Seiten für Sie dienen, Memcache liefert Informationen für Seiten, die eine Mischung aus bekannten und neuen Daten haben, damit Sie Seiten schneller erstellen können.

Ein Beispiel, das auf stackoverflow.com anwenden könnte: das Hinzufügen dieses Kommentar die Seiten-Cache für ungültig erklärt, so dass diese Seite würde von Varnish gelöscht werden (und auch meine Profilseite, die wahrscheinlich nicht wert Caching zu beginnen Die Erinnerung daran, alle betroffenen Seiten ungültig zu machen, kann ein kleines Problem darstellen. Alle Kommentare befinden sich jedoch immer noch in Memcache, sodass die Datenbank nur diesen Kommentar schreiben muss. Die Datenbank muss nichts anderes tun, um die Seite zu generieren. Alle Kommentare werden von Memcache gezogen, und die Seite wird erneut zwischengespeichert, bis jemand sie wieder beeinflusst (vielleicht indem ich meine Antwort abstimme). Auch hier schreibt die Datenbank die Abstimmung, alle anderen Daten werden aus Memcache gezogen und das Leben ist schnell.

Memcache speichert Ihre Datenbank vor viel Lesearbeit, Varnish speichert Ihren dynamischen Webserver vor der CPU-Last, indem er Seiten seltener generiert (und die db-Last etwas aufhebt, wenn nicht für Memcache).

+8

+1 ausgezeichnete Antwort. – AlienWebguy

+0

Landkarten, danke! – Silopolis

+3

dies: "(vielleicht durch meine Antwort zu stimmen)" ließ mich Ihre Antwort – Cesc

24

Meine Erfahrung kommt von der Verwendung von Varnish mit Drupal. In so einfachen Worten wie möglich würde ich hier antworten:

Im Allgemeinen arbeitet Varnish für nicht authentifizierten (via Cookie) Datenverkehr und memcached wird authentifizierten Datenverkehr zwischenspeichern.

Also beide verwenden.

+4

Sie haben es genagelt, nebenbei bemerkt, Varnish funktioniert besser beim Cachen anonymer Benutzer ... –

Verwandte Themen