Рекомендуется ли использовать сжатие NTFS для папок и файлов журнала IIS?
Благодаря этому мне удалось снизить объем памяти с 20 ГБ до 7 ГБ. Журналы IIS ведутся на день и имеют средний размер 20 МБ, но в некоторые экстремальные дни - 200 МБ.
Мне интересно, должен ли IIS открывать весь файл в памяти, заставляя NTFS разархивировать 20 МБ (или 200 МБ в крайнем случае) каждый раз? Или есть какая-то магия, позволяющая IIS добавлять контент? Какое влияние оказывает система? Может ли это стать проблемой, если мы увеличим наш трафик?
Должен ли я разделить их на час, а не на день?
Есть какой-нибудь официальный документ Microsoft по этому поводу? Я не мог найти ни одного.
Я сжимаю свои журналы IIS на многих серверах IIS, хотя в основном это серверы, на которых размещены Outlook Web Access / App или веб-сайты небольшого объема. У меня нет проблем с этим, и очень нравится экономия места на диске.
В общем, принимая это решение, вы меняете ЦП на хранилище. Если вы с самого начала привязаны к процессору, то это, вероятно, не лучший компромисс. Для моих серверов OWA, которые могут увеличивать гигабайты журналов в день (спасибо устройствам ActiveSync), я думаю, что это хороший компромисс.
Драйвер файловой системы NTFS обрабатывает сжатие, поэтому он не меняет способ записи файлов в IIS.
Редактировать:
Вы, возможно, также жертвуете некоторой пропускной способностью ввода-вывода и IOPS. Если у вас достаточно большой объем, и записи в журнал представляют собой значительное потребление ресурсов ввода-вывода, вы также можете увидеть снижение потребления ввода-вывода из-за включения сжатия.
Единственный способ узнать, как это повлияет на вас, - это протестировать его самостоятельно. Возьмите базовую линию с отключенным сжатием, а затем включите и сравните их. Нет волшебной палочки, которой можно было бы махнуть, чтобы знать, как это повлияет на вас - в игре слишком много недетерминированных факторов.
Поскольку Эван уже дал общий ответ, я хотел бы ответить на два ваших подвопроса:
Сбрасывает ли IIS журналы каждые X минут?
http.sys, часть IIS, работающая в режиме ядра, отвечает за ведение журнала и буферизует данные в памяти перед их записью в файлы журнала. Я не уверен, но не думаю, что он выполняет промывку каждые x секунд, более вероятно, после того, как его буфер заполнится.
Нужно ли читать весь файл при добавлении одной строки?
Нет, NTFS записывает обновления файла в свой собственный кеш, а затем сжимает и асинхронно добавляет данные в файл. Запись в сжатый файл ненамного медленнее, чем в несжатый файл.
Таким образом, не должно возникнуть проблем с использованием сжатия NTFS для файлов журнала IIS.
Источники:
Набор ресурсов IIS 7, Глава 15: Ведение журнала - Microsoft Press 2008
Внутреннее устройство Windows 6-е издание, часть 2, глава 12: Файловые системы Microsoft Press 2012