通过这样做,我能够从20GB降到7GB。 IIS日志每天都有,平均大小为20MB,但有些极端的日子有200MB。
我想知道IIS是否必须在内存中打开整个文件,迫使NTFS每次解压20MB(或极端情况下是200MB)? 还是有一些魔术,允许IIS添加内容? 系统的影响是什么? 如果我们增加stream量,会不会成为一个问题?
我应该每小时而不是每天拆分它们吗?
任何官方的微软文件呢? 我找不到一个。
正如埃文已经给出了一个普遍的答案,我想解决你的两个子问题:
IIS每隔X分钟刷新一次日志?
http.sys,IIS的内核模式部分负责日志logging,并在将数据写入日志文件之前将其caching在内存中。 我不确定,但我不认为它每隔x秒都会刷新一次,更可能是在缓冲区满了之后。
添加单行时是否需要读取整个文件?
不,NTFS将对文件的更新写入自己的caching,然后将数据asynchronous压缩并附加到文件。 写入压缩文件的速度并不比没有压缩的文件要慢。
所以在IIS日志文件上使用NTFS压缩应该没有问题。
资料来源:
IIS 7资源工具包,第15章:日志logging – Microsoft Press 2008
Windows内核第6版第2部分,第12章:文件系统Microsoft Press 2012
我压缩了很多IIS服务器上的IIS日志,尽pipe主要是托pipeOutlook Web Access / App或小容量网站的服务器。 这样做我没有问题,而且相当像磁盘空间节省。
一般来说,你通过做出这个决定来交换CPU的存储空间。 如果你开始使用CPU,那么这可能不是一个好的折衷。 对于我的OWA服务器,每天可以增加千兆字节的日志(感谢ActiveSync设备),我认为这是一个很好的折衷。
NTFS文件系统驱动程序处理压缩,所以它不会更改IIS写入文件的方式。
编辑:
您也有可能也在一些I / O带宽和IOPS之间取舍。 如果卷的容量足够大,以致日志写入消耗大量I / O资源,则启用压缩的I / O消耗也会减less。
你要告诉你如何影响你的唯一方法就是自己来衡量一下。 采取压缩禁用的基线,然后启用并比较它们。 没有魔杖挥手去知道它会如何影响你 – 有太多的非确定性因素在起作用。