Ist es empfehlenswert, die NTFS-Komprimierung für IIS-Protokollordner zu verwenden?

13

Ist es empfehlenswert, die NTFS-Komprimierung für IIS-Protokollordner und -dateien zu verwenden?

Auf diese Weise konnte ich von 20 GB auf 7 GB herunterfahren. Die IIS-Protokolle sind pro Tag und haben eine durchschnittliche Größe von 20 MB, aber einige extreme Tage haben 200 MB.

Ich frage mich, ob IIS die gesamte Datei im Speicher öffnen muss, damit NTFS jedes Mal 20 MB (oder im Extremfall 200 MB) entpackt. Oder gibt es eine Art Magie, mit der IIS Inhalte anhängen kann? Wie wirkt sich das System aus? Könnte es ein Problem werden, wenn wir unseren Verkehr steigern?

Soll ich sie pro Stunde anstatt pro Tag aufteilen?

Gibt es ein offizielles Microsoft-Papier dazu? Ich konnte keinen finden.

Malartre
quelle
2
Wenn Sie die Protokolle langfristig pflegen müssen, warum verschieben Sie sie nicht? Behalten Sie die Protokolle des aktuellen Tages auf dem Server bei und verschieben / archivieren Sie den Rest an einen anderen Ort. Wofür verwenden Sie die Protokolle überhaupt?
Joeqwerty
1
Beim Verschieben wird ein weiterer Prozess hinzugefügt, bei dem ein Fehler auftreten kann. Ich habe versucht zu KÜSSEN.
Malartre

Antworten:

10

Da Evan bereits eine allgemeine Antwort gegeben hat, möchte ich zwei Ihrer Unterfragen beantworten:

Spült IIS die Protokolle alle X Minuten?

http.sys, der Kernelmodus-Teil von IIS ist für die Protokollierung verantwortlich und puffert die Daten im Speicher, bevor sie in die Protokolldateien geschrieben werden. Ich bin mir nicht sicher, aber ich glaube nicht, dass alle x Sekunden eine Spülung durchgeführt wird, wahrscheinlicher, nachdem der Puffer voll ist.

Muss die gesamte Datei gelesen werden, wenn eine einzelne Zeile hinzugefügt wird?

Nein, NTFS schreibt Aktualisierungen einer Datei in seinen eigenen Cache und komprimiert die Daten anschließend und hängt sie asynchron an die Datei an. Das Schreiben in eine komprimierte Datei ist nicht wesentlich langsamer als in eine nicht komprimierte Datei.

Es sollte also kein Problem mit der Verwendung der NTFS-Komprimierung für IIS-Protokolldateien geben.

Quellen:

IIS 7 Resource Kit, Kapitel 15: Protokollierung - Microsoft Press 2008

Windows Internals 6. Ausgabe Teil 2, Kapitel 12: Dateisysteme Microsoft Press 2012

Peter Hahndorf
quelle
Genau die Antwort, nach der ich gesucht habe, @ peter-hahndorf!
Malartre
Interessanterweise empfiehlt dieser Artikel von Microsoft etwas anderes: If you run a program that uses transaction logging and that constantly writes to a database or log, configure the program to store its files on a volume that is not compressed. If a program modifies data through mapped sections in a compressed file, the program can produce "dirty" pages faster than the mapped writer can write them.Frage ist, was ist die Definition von ständig ?
Zero3
1
@ Zero3 Die Transaktionsprotokollierung unterscheidet sich ein wenig von IIS-Protokollen. In diesem Fall kann eine Funktion in Ihrem Programm erst dann erfolgreich zurückgegeben werden, wenn eine Transaktionsänderung dauerhaft auf die Festplatte geschrieben wurde. Die Anwendungsleistung hängt also direkt von der Schreibgeschwindigkeit Ihrer Transaktionsprotokolle ab.
NReilingh
@NReilingh Du könntest recht haben. Ich weiß eigentlich nicht, ob IIS synchron / asynchron in seine Protokolldateien schreibt. Ich denke, dass der allgemeine Punkt, den der Artikel anspricht (es gibt andere Beispiele darin, wie Benutzerordner mit vielen Lese- und Schreibvorgängen), darin besteht, dass schweres E / A ein Problem mit komprimierten Ordnern sein kann.
Zero3
13

Ich komprimiere meine IIS-Protokolle auf vielen IIS-Servern, allerdings hauptsächlich auf Servern, auf denen Outlook Web Access / App oder Websites mit geringem Volumen gehostet werden. Ich habe keine Probleme damit und mag die Speicherplatzersparnis.

Im Allgemeinen tauschen Sie die CPU gegen Speicher aus, indem Sie diese Entscheidung treffen. Wenn Sie anfangs CPU-gebunden sind, ist dies wahrscheinlich kein guter Kompromiss. Für meine OWA-Server, die täglich Gigabyte an Protokollen erstellen können (dank ActiveSync-Geräten), halte ich den Kompromiss für gut.

Der NTFS-Dateisystemtreiber verwaltet die Komprimierung, sodass nicht geändert wird, wie IIS in die Dateien schreibt.

Bearbeiten:

Möglicherweise werden auch einige E / A-Bandbreiten und IOPS gegeneinander abgewogen. Wenn das Volumen so hoch ist, dass Ihre Protokollschreibvorgänge einen erheblichen Verbrauch an E / A-Ressourcen bedeuten, kann es zu einem Rückgang des E / A-Verbrauchs kommen, wenn auch die Komprimierung aktiviert wird.

Der einzige Weg, wie sich dies auf Sie auswirkt, ist das Benchmarking selbst. Nehmen Sie eine Baseline mit deaktivierter und aktivierter Komprimierung und vergleichen Sie sie. Es gibt keinen Zauberstab zum Winken, um zu wissen, wie er sich auf Sie auswirkt - es gibt einfach zu viele nicht deterministische Faktoren im Spiel.

Evan Anderson
quelle
1
Schlagen Sie mich ein paar Sekunden ... haben Sie keine Arbeit zu erledigen, anstatt ServerFault zu spielen? : p Wie auch immer, +1. Ich habe seit Ewigkeiten das Gleiche getan und habe noch kein Problem damit.
HopelessN00b
Diese Antwort ist anekdotisch und macht Spaß, aber ich suche nach mehr Fakten. Ich schaue auf Besonderheiten, wie, wenn IIS-Flush-Protokolle alle X Minuten und wenn es die gesamte Datei lesen muss, nur um eine Zeile hinzuzufügen.
Malartre
@ Malartre Es ist nicht anekdotisch, wirklich. Wie bereits erwähnt, handelt es sich bei der NTFS-Datei- / Ordnerkomprimierung um einen Kompromiss zwischen Speicherplatz für CPU-Zyklen (und einer geringfügigen Erhöhung des Speicherbedarfs). Das ist ungefähr so ​​spezifisch und sachlich wie möglich, ohne Benchmarking und tatsächliche Tests in Ihrer spezifischen Umgebung durchzuführen.
HopelessN00b