Varnish

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche
Der Titel dieses Artikels ist mehrdeutig. Zur britischen Radrennfahrerin siehe Jessica Varnish.
Varnish
Maintainer Varnish Software
Entwickler Poul-Henning Kamp, Linpro, Varnish Software
Aktuelle Version 4.0.2[1]
(8. Oktober 2014[1])
Betriebssystem Unix
Programmier­sprache C
Kategorie Cache, HTTP-Accelerator
Lizenz BSD
Deutschsprachig nein
varnish-cache.org

Varnish ist ein Web-Beschleuniger für dynamische Webseiten mit viel Inhalt. Im Gegensatz zu anderen Webbeschleunigern, die häufig aus clientseitigen Proxys oder aus Servern entstanden, wurde Varnish von Grund auf als Webbeschleuniger konzipiert. Varnish wird von namhaften Internetseiten wie Facebook, Twitter, E-Bay, The New York Times[2], The Hindu, Vimeo, Die Zeit[3] und Wikipedia eingesetzt.[4]

Entstehung[Bearbeiten]

Das Projekt wurde initiiert durch den Online-Ableger der norwegischen Boulevardzeitung Verdens Gang. Architekt und Hauptentwickler ist der unabhängige dänische Softwareentwickler Poul-Henning Kamp. Management, Infrastruktur und zusätzliche Entwicklung wurden ursprünglich auch von der norwegischen Linux-Beratungsfirma Linpro zur Verfügung gestellt. Support, Management und Entwicklung von Varnish wurde später in eine eigenständige Firma, Varnish Software, ausgelagert.

Varnish ist freie Software, die unter der BSD-Lizenz steht. Kommerzieller Support wird unter anderem von Varnish Software angeboten.

Versionen[Bearbeiten]

Version Veröffentlichungsjahr Anmerkungen/Referenzen
1.0 2006 [5]
2.0 2008 [6]
3.0 2011 [7][8]
4.0 2014 [9]

Architektur[Bearbeiten]

Varnish legt Daten im virtuellen Speicher ab und überlässt dem Betriebssystem die Entscheidung, was im Hauptspeicher verbleiben und was auf die Festplatte ausgelagert werden soll. Dies trägt dazu bei, Situationen zu vermeiden, in denen das Betriebssystem beginnt, Daten zu cachen, während sie durch die Applikation auf die Festplatte geschrieben werden.

Darüber hinaus ist Varnish stark Thread-basiert. Jede Verbindung zu einem Client wird als separater Arbeitsthread behandelt. Ist das voreingestellte Limit von aktiven Arbeitsthreads erreicht, werden eingehende Verbindungen in eine Überlaufwarteschlange gestellt. Erst wenn das voreingestellte Limit dieser Warteschlange erreicht ist, werden eingehende Verbindungen abgelehnt.

Der hauptsächliche Konfigurationsmechanismus ist die Varnish Configuration Language (VCL), eine domänenspezifische Sprache, die dazu verwendet wird, bei kritischen Punkten in der Anfragebehandlung Hooks zu schreiben. Die meisten dieser Entscheidungen bleiben dabei dem VCL-Code überlassen, was Varnish deutlich stärker konfigurierbar und anpassbar macht als die meisten anderen Web-Beschleuniger. Wenn ein VCL-Skript geladen wird, findet eine Übersetzung in C statt, es wird als Shared Object kompiliert und direkt in den Beschleuniger gelinkt.

Eine Reihe von Laufzeiteinstellungen kontrollieren Parameter wie die maximale und minimale Anzahl der Arbeits-Threads und diverse Timeouts. Eine Schnittstelle auf Kommandozeilenebene erlaubt die Änderung dieser Parameter und das Kompilieren, Laden und Aktivieren neuer VCL-Skripte ohne einen Neustart des Beschleunigers.

Um die Anzahl der Systemaufrufe auf ein Minimum zu reduzieren, werden Logdaten im Shared Memory abgelegt und die Aufgaben der Filterung, Formatierung und Speicherung auf Festplatte an eine getrennte Applikation übergeben.

Geschwindigkeit[Bearbeiten]

Während Varnish so entwickelt wurde, dass Threads möglichst reibungslos nebeneinander ablaufen können, kann die Performance von Varnish nur so gut sein wie die Implementierung der pthreads auf dem Betriebssystem. Eine schlechte malloc-Implementierung kann außerdem unnötige Ressourcen beanspruchen und damit die Performance begrenzen.

Lastverteilung[Bearbeiten]

Varnish unterstützt Lastverteilung sowohl im Round-Robin-Verfahren als auch zufällig gesteuert.[10]

Siehe auch[Bearbeiten]

Quellen[Bearbeiten]

Einzelnachweise[Bearbeiten]

  1. a b Releases. Current supported releases. In: varnish-cache.org. Varnish Software AS, abgerufen am 14. Dezember 2014 (HTTPS, englisch).
  2. Varnish Software - About. In: Facebook. Abgerufen am 14. Dezember 2014 (HTTPS, englisch, Seite der Varnish Software AS auf Facebook).
  3. Who relies on Varnish? In: varnish-software.com. Varnish Software AS, abgerufen am 14. Dezember 2014 (HTTPS, englisch).
  4. Wikipedia:Server. Abgerufen am 14. Dezember 2014 (HTTPS, deutsch).
  5. "Making Catalyst Sites Shine with Varnish", Dec. 14, 2008
  6. "Varnish 2.0 released!", Oct. 15 2008
  7. "Varnish Cache 3.0.0"
  8. "Varnish Cache 3.0.0 released", Jun. 16 2011
  9. "Varnish Cache 4.0.0", Apr. 10 2014
  10. https://varnish-cache.org/wiki/BackendPolling