Linux als Proxy-Server - Optimierung

Cache-Speicher vergrößern und verteilen

Selbst wenn Sie sich mit der LRU-Strategie begnügen, gilt für den Cache-Speicher von Squid die Faustregel "Speicher ist durch nichts zu ersetzen - außer durch mehr Speicher.". Es bietet sich daher an, den von Haus aus vorgesehenen Plattenplatz von 100 MByte für gespeicherte Objekte gehörig aufzustocken. Bei dieser Aktion sollten Sie auch gleich einen Wechsel des verwendeten Speichersystems ins Auge fassen. Normalerweise setzt Squid für diese Aufgabe das Unified File System (UFS) ein. Sein Vorteil ist, dass es auf allen Plattformen gleichermaßen gut - oder je nach Betrachtungsweise auch schlecht - funktioniert.

Eine bessere Alternative stellt Advanced UFS (AUFS) dar. Es verwendet so genannte Posix-Threads und sorgt so dafür, dass Squid nicht auf das Ergebnis eines Schreibvorgangs warten muss, bevor er seine Arbeit fortsetzt.

Ähnliches leistet auch das Speicherverfahren, das sich eines externen Prozesses bedient. Bei diesem, passender Weise diskd genannten Verfahren gibt Squid Schreib- und Leseanforderungen an die parallel laufenden Diskd-Prozesse weiter. Der Vorteil ist nicht nur, dass Squid weiterarbeiten kann, während Diskd sich um den Datentransport kümmert. Da die Zahl der Diskd-Prozesse einstellbar ist, bietet diese Methode auch bessere Möglichkeiten zur Optimierung. Für den generellen Betrieb stellt daher AUFS eine gute Wahl dar, wer gerne selbst an den Einstellungen schraubt, kann mit Diskd experimentieren. Welches System zum Einsatz kommt, bestimmt das Schlüsselwort cache_dir der Squid-Konfiguration. Für die Umstellung auf AUFS sieht die entsprechende Zeile zum Beispiel so aus:

cache_dir aufs /opt/squid/var/cache 1000 256 256

In diesem Beispiel haben wir zusätzlich noch weitere Parameter verändert. Die Angabe des Werts 1000 statt der Vorgabe 100 erweitert den verfügbaren Cache-Speicher auf der Platte von 100 MByte auf rund 1 GByte. Grundsätzlich sollten Sie für die Größe des Platten-Caches lieber zu viel Speicher angeben als zu wenig. Squid nutzt nur, was er wirklich braucht. Kommt er jedoch nahe an die festgelegte Obergrenze, muss er zwangsläufig mit Aufräumarbeiten beginnen. Das kostet Zeit und drückt deutlich auf die Performance.

Um eine schnelle Indizierung zu gewährleisten haben wir zudem die Anzahl der zur Speicherung verfügbaren Verzeichnisse von ursprünglich 16 auf 256 erhöht, den Wert für die weiteren Unterverzeichnisse jedoch auf 256 belassen. Diese beiden Parameter haben direkten Einfluss darauf, wie schnell Squid aus dem Cache angeforderte Daten findet. Je weniger Dateien sich in einem Verzeichnis befinden, desto kürzer sind die Laufzeiten der Betriebssystem-Prozesse zur Suche nach einem Dateinamen. Damit die Verzeichnisse auch wirklich verfügbar werden, müssen Squid über den Aufrufparameter -z anweisen die neuen Directorys anzulegen.