Windows ConfidentialBehalten Sie Ihre Caches in der Nähe

Raymond Chen

Caches können die Leistung verbessern, aber Sie müssen sie richtig verwenden. Es gibt in der Regel zahlreiche Parameter, die Sie anpassen können, aber selbst wenn die Richtlinien Ihres Cache richtig abgestimmt sind, müssen Sie ihn dennoch auf die korrekte Weise verwenden.

Es folgt ein Beispiel, das auf tatsächlichen Ereignissen basiert. Das Szenario wurde so angepasst, dass es von den Lesern leichter verstanden wird und die Details einer Technologie, die für das zugrunde liegende Problem nicht relevant ist, nicht erläutert werden müssen.

Angenommen, ein Unternehmen mit Sitz in New York verfügt über einen zentralen Webserver, der als Dokumentarchiv fungiert. Das Unternehmen kann beispielsweise den Antrag auf Klageabweisung aus dem Fall Johnson anfordern, der am 23. Juni 2005 abgelegt wurde. Dabei handelt es sich im Grunde um eine statische Webseite, da sich das Dokument nie ändert – wenn der Antrag aktualisiert werden muss, wird ein Nachtrag abgelegt, während das Originaldokument unverändert bleibt, da es bereits archiviert wurde. Zur Änderung des ursprünglichen Antrags wäre eine Zeitmaschine erforderlich, um in die Vergangenheit zurückzureisen. (Dabei würde versehentlich auch gleich der Verlauf der Geschichte durch eine scheinbar unbedeutende Handlung geändert werden.)

Dieses Verwendungsmuster passt gut zu einem Webproxyserver, der mit Zwischenspeicherung arbeitet. Wenn ein Mitarbeiter den Antrag vom 23. Juni anfordert und ein anderer Mitarbeiter kurze Zeit später dasselbe Dokument benötigt, kann der Proxyserver auf die zweite Abfrage reagieren und die gleichen Ergebnisse wie bei der ersten Abfrage bereitstellen, sodass ein Roundtrip zum zentralen Server entfällt.

Das beschriebene Unternehmen verfügt bereits über einen Webproxyserver mit Zwischenspeicherungsfunktion und hat das Büro in Miami für dessen Nutzung konfiguriert. Es wurde jedoch keine Leistungsverbesserung festgestellt. Selbst wenn ein und dasselbe Dokument mehrmals hintereinander vom Proxy angefordert wurde, war die Reaktion genauso langsam wie bei der direkten Anforderung des Dokuments vom zentralen Server. Was ist schief gegangen? War der Proxyserver beschädigt?

Tatsächlich funktionierte der Proxyserver einwandfrei. Das Problem lag beim Standort des Proxyservers: Das Büro Miami verfügte über eine langsame Verbindung nach New York und verwendete den Webproxy mit Zwischenspeicherungsfunktion, der im New Yorker Büro installiert war.

Das Diagramm in Abbildung 1 verdeutlicht, warum die Vorgänge durch den Proxy nicht beschleunigt wurden. Selbst wenn der Proxy perfekt funktionierte und jede Anforderung ohne Inanspruchnahme des zentralen Servers erfüllt werden konnte, mussten die Dokumente immer noch über die langsame Verbindung zwischen Miami und New York übertragen werden.

fig01.gif

Abbildung 1 Proxyserver auf der falschen Seite einer langsamen Verbindung (zum Vergrößern auf das Bild klicken)

Wenn Sie einen Cache verwenden, muss der Cache schneller sein als das Element, das er zwischenspeichert. In diesem Beispiel muss die Verbindung vom Büro Miami zum Proxyserver schneller sein als die Verbindung vom Büro Miami zum zentralen Server. Der Proxyserver muss näher am Büro Miami installiert werden. Um optimale Ergebnisse zu erzielen, sollte der Proxyserver in Miami installiert sein (siehe Abbildung 2).

fig02.gif

Abbildung 2 Ein weitaus nützlicheres Proxysetup für das Büro Miami (zum Vergrößern auf das Bild klicken)

Wenn sich der Proxyserver in Miami befindet und ein Rechtsanwalt in Miami den Antrag vom 23. Juni aufrufen möchte, wird die Anforderung an den lokalen Proxy geleitet, der das Dokument schnell aus seinem Cache ausgibt. Wenn sich das Dokument nicht bereits im Cache befindet, wird es vom Server abgerufen und dann für die nächste Anforderung durch einen Mitarbeiter des Büros Miami zwischengespeichert.

Caches nutzen die zeitliche Lokalität, aber durch Verlagern des Proxy in das Büro Miami wird auch die geografische Lokalität ausgenutzt: Die Rechtsanwälte im Büro Miami fordern in der Regel andere Dokumente an als die Anwälte des New Yorker Büros (da sie natürlich andere Fälle bearbeiten), und durch die Verwaltung eines eigenen Cache für jedes Remotebüro kann jeder Cache das zugehörige Büro besser bedienen.

Das Unternehmen hat einen Proxyserver im Büro Miami installiert und die Computer in diesem Büro für die Verwendung des lokalen Proxy konfiguriert. Jetzt herrscht in Bezug auf die Leistung allgemeine Zufriedenheit.

Raymond Chen befasst sich auf seiner Website The Old New Thing und in seinem gleichnamigen Buch (Addison-Wesley, 2007) mit der Geschichte von Windows und mit der Win32-Programmierung. Der Fleck lässt sich mit ein wenig Sodawasser entfernen.