Lädt ein Benutzer eine große Videodatei herunter, so dauert das nicht nur eine Weile, es verbraucht auch ziemlich viel Bandbreite. Tengine kann deshalb auf Wunsch nur Teilstücke einer Datei herausgeben. Diese "Slicing" genannte Funktion muss der Anwender mit dem
»configure
«
-Parameter
»--with-http_slice_module
«
aktivieren und dann wie in
Listing 4
in einem
»location
«
-Block einschalten.
Listing 4
Slicing für Videos
»slice;
«
knipst dort zunächst das Slicing für alle Dateien an. Die Direktiven
»slice_arg_begin
«
und
»slice_end_arg
«
bestimmen die Kürzel, mit denen der Browser den Anfang beziehungsweise das Ende des Teilstücks festlegt. Möchte der Browser jetzt aus dem Video
»titanic.mp4
«
das Teilstück von Byte 1024 bis Byte 2048 angeliefert bekommen, ruft er die folgende URL auf:
http://example.com/titanic.mp4?anf=1024&ende=2048
Den Rest übernimmt Tengine. Der Browser kann sich auf diese Weise die einzelnen Teile der Datei auch von unterschiedlichen Servern holen, was wiederum die Last besser verteilt.
Bei Systemüberlastungen oder zuneige gehendem Hauptspeicher kann Tengine eine Fehlermeldung zurückliefern oder auf einen anderen Server weiterleiten. Die Überwachung der Systemressourcen übernimmt das Sysguard-Modul, das man bei der Übersetzung von Tengine mit dem
»configure
«
-Parameter
»--with-http_sysguard_module
«
einschaltet. Anschließend erweitert man den
»server
«
-Block um die Einstellungen aus
Listing 5
.
Listing 5
Überwachungsfunktionen aktivieren
Zunächst schaltet
»sysguard on
«
die Funktion ein. Sollte die Systemauslastung (
»sysguard_load
«
) den hinter
»load=
«
angegebenen Wert überschreiten, leitet Tengine alle Anfragen an die URL
»/notfall
«
um, die hier im Beispiel den Fehler
»503
«
zurückliefert. Das Gleiche passiert, wenn der Auslagerungsspeicher (
»sysguard_mem
«
) einen Anteil von 25 Prozent überschreitet (
»swapratio=25%
«
). Das Sysguard-Modul funktioniert übrigens nur, wenn das Betriebssystem den Systemaufruf
»sysinfo
«
bereitstellt oder die installierte Glibc-Bibliothek die Funktion
»getloadavg()
«
anbietet.