Apakah praktik yang baik untuk menggunakan Kompresi NTFS pada folder Log IIS?

13

Apakah ini praktik yang baik untuk menggunakan Kompresi NTFS pada folder dan file Log IIS?

Saya bisa turun dari 20GB ke 7GB dengan melakukan ini. Log IIS adalah per hari, dan memiliki ukuran rata-rata 20MB tetapi beberapa hari yang ekstrem memiliki 200MB.

Saya bertanya-tanya apakah IIS harus membuka seluruh file dalam memori, memaksa NTFS unzip 20MB (atau 200MB dalam kasus ekstrim) setiap kali? Atau adakah sihir yang memungkinkan IIS untuk menambahkan konten? Apa dampak sistem? Bisakah itu menjadi masalah jika kita meningkatkan traffic kita?

Haruskah saya membaginya per jam, bukan per hari?

Adakah makalah resmi Microsoft tentang ini? Saya tidak dapat menemukannya.

Malartre
sumber
2
Jika Anda perlu mempertahankan log untuk jangka panjang, mengapa tidak memindahkannya? Simpan log hari ini di server dan pindahkan / arsipkan sisanya di tempat lain. Apa gunanya Anda menggunakan log?
joeqwerty
1
Bergerak adalah menambahkan proses lain yang bisa gagal. Saya mencoba untuk mencium.
Malartre

Jawaban:

10

Karena Evan sudah memberikan jawaban umum, saya ingin membahas dua sub-pertanyaan Anda:

Apakah IIS membersihkan log setiap X menit?

http.sys, bagian mode kernel IIS bertanggung jawab untuk logging dan buffer data dalam memori sebelum menulisnya ke file log. Saya tidak yakin tetapi saya tidak berpikir itu melakukan pembilasan setiap x detik, lebih mungkin setelah buffernya sudah penuh.

Apakah seluruh file perlu dibaca saat menambahkan satu baris?

Tidak, NTFS menulis pembaruan ke file ke dalam cache sendiri dan kemudian mengompres dan menambahkan data secara tidak sinkron ke file. Menulis ke file terkompresi tidak lebih lambat secara signifikan daripada file terkompresi.

Jadi seharusnya tidak ada masalah dengan menggunakan kompresi NTFS pada file log IIS.

Sumber:

IIS 7 Resource Kit, Bab 15: Logging - Microsoft Press 2008

Windows Internals 6th Edition Part2, Bab 12: Sistem File Microsoft Press 2012

Peter Hahndorf
sumber
Tepat jawaban yang saya cari, @ peter-hahndorf!
Malartre
Menariknya, artikel ini oleh Microsoft merekomendasikan sebaliknya: 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.Pertanyaannya adalah, apa definisi dari terus - menerus ?
Zero3
1
@ Zero3 Pencatatan transaksi adalah sesuatu yang sedikit berbeda dari log IIS. Itu akan menjadi tempat di mana fungsi di dalam program Anda sebenarnya tidak diperbolehkan untuk kembali dengan sukses sampai perubahan transaksional dibuat tahan lama dengan telah ditulis ke disk, sehingga kinerja aplikasi secara langsung terkait dengan kecepatan menulis disk Anda untuk log transaksi Anda.
NReilingh
@NReilingh Anda mungkin benar. Saya sebenarnya tidak tahu apakah IIS menulis ke file lognya sync / async. Either way, saya pikir titik keseluruhan yang memunculkan artikel (ada contoh lain di dalamnya, seperti folder pengguna dengan banyak membaca dan menulis) adalah bahwa IO yang berat mungkin menjadi masalah dengan folder terkompresi.
Zero3
13

Saya kompres log IIS saya di banyak server IIS, meskipun terutama server yang hosting Outlook Web Access / App atau situs web volume rendah. Saya tidak memiliki masalah dalam melakukannya, dan cukup seperti penghematan ruang disk.

Secara umum, Anda memperdagangkan CPU untuk penyimpanan dengan membuat keputusan ini. Jika Anda terikat dengan CPU untuk memulai maka ini mungkin bukan tradeoff yang baik. Untuk server OWA saya, yang dapat menumbuhkan gigabyte log sehari (terima kasih perangkat ActiveSync) Saya pikir tradeoffnya bagus.

Driver sistem file NTFS menangani kompresi, sehingga tidak mengubah cara IIS menulis ke file.

Edit:

Anda juga berpotensi menukar bandwidth I / O dan IOPS. Jika Anda memiliki volume yang cukup tinggi yang ditulis oleh log Anda adalah konsumsi sumber daya I / O yang signifikan, Anda juga dapat melihat penurunan konsumsi I / O karena mengaktifkan kompresi juga.

Satu-satunya cara Anda akan mengetahui bagaimana ini berdampak pada Anda adalah dengan membandingkannya sendiri. Ambil garis dasar dengan kompresi dinonaktifkan dan kemudian diaktifkan dan bandingkan. Tidak ada tongkat ajaib untuk melambai untuk mengetahui bagaimana itu akan berdampak pada Anda - ada terlalu banyak faktor non-deterministik dalam permainan.

Evan Anderson
sumber
1
Kalahkan saya dalam beberapa detik ... tidakkah Anda memiliki pekerjaan yang harus dilakukan, alih-alih bermain ServerFault? : p Anyway, +1. Saya telah melakukan hal yang sama untuk waktu yang lama dan belum memiliki masalah karenanya.
HopelessN00b
Jawaban ini anekdotal dan menyenangkan tetapi saya mencari lebih banyak fakta. Saya melihat spesifik, seperti jika IIS flush log setiap X menit dan jika perlu membaca seluruh file hanya untuk menambahkan satu baris.
Malartre
@Malartre Bukan anekdot, sungguh. Seperti disebutkan, kompresi file / folder NTFS adalah tradeoff - disk space untuk siklus CPU (dan peningkatan penggunaan memori yang sangat kecil). Itu tentang se spesifik dan faktual mungkin tanpa melakukan benchmarking dan menjalankan tes yang sebenarnya pada lingkungan spesifik Anda.
HopelessN00b