Squid als Reverse-Proxy

Vorteil 1: Weniger Last auf dem Webserver

Der als Reverse-Proxy konfigurierte Squid nimmt alle Client-Anfragen entgegen. Mit dieser Anfrage verfährt er im Grunde genauso wie ein normaler Proxy: Er überprüft, ob er für diese Anfrage bereits eine Antwort kennt. Ist die Antwort noch nicht veraltet, dann liefert er sie direkt aus - es gibt keinen weiteren Round-Trip zum eigentlichen Webserver. Nur wenn die Antwort veraltet ist oder nicht vorliegt, leitet er die Anfrage an den eigentlichen Webserver weiter. Daraus resultiert eine dramatisch reduzierte Anzahl von Anfragen an den Webserver. Das ist auf den ersten Blick nichts besonders Aufregendes: Schließlich spart man ja insgesamt keine Anfragen, denn der Squid muss diese ja weiterhin entgegennehmen und abarbeiten.

Aber: Der Squid kann eine Anfrage um ein Vielfaches schneller beantworten als der Webserver. Das trifft im Besonderen auf Anfragen zu, die mit Hilfe von Programmen oder Scripts (PHP, CGI, ASP, ...) beantwortet werden. Beim Squid reicht im Wesentlichen ein Lookup in einer großen Hash-Tabelle. Der Webserver dagegen benötigt mindestens einen Festplattenzugriff. Er stattet die geladene Datei mit zusätzlichen http-Header-Informationen aus, bevor er sie ausliefert.

In der Praxis wird der Webserver obendrein einen eigenen Prozess (oder Thread) starten, um die Datei vor der Auslieferung weiter zu bearbeiten: Dort läuft dann zum Beispiel die PHP-Engine, um die Seite dynamisch zusammenzubauen, im schlimmsten Fall aus den Ergebnissen einer Datenbankabfrage. Dieser Verbrauch an CPU-Leistung und Arbeitsspeicher macht sich natürlich deutlich bemerkbar.

Der Squid hingegen braucht nur einen einzelnen Prozess, mit dessen Hilfe er seinen Cache durchsucht: Während ein typischer Webserver-Zugriff mit einfachen Tools wie top (unter Unix) bereits zu bemerken ist, bleibt die Belastung durch den Squid praktisch bei null.

Lange Rede, kurzer Sinn: Der Einsatz des Squid spart erheblich Rechenleistung auf Web- und Datenbank-Servern. Man kann also mit der gleichen Webserver-Hardware deutlich mehr Benutzer versorgen als ohne Squid. Und dies wiederum erspart zusätzlich zeitaufwendige Wartungsarbeiten.