我已经在服务器上研究了IIS 7.5中的W3C格式日志文件一段时间而出现了一些性能问题,在我看来,与MSDN documentation相反,"时间& #34;字段 不
"请求发生的时间,协调世界时(UTC)"
...而是响应完成发送的时间。
我这样说是因为当我在一个有点受控制的环境中跟踪来自用户的页面请求序列时,他们必须及时返回以提交下一个请求,否则他们能够提交他们对页面的请求令人震惊对于有大量时间输入的页面来说速度很快。
例如(为了安全和清晰起见,我正在编辑,缩写和省略):
#Fields: date time s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip sc-status sc-substatus sc-win32-status time-taken
2012-11-28 22:25:17 192.168.0.21 GET /Main.aspx - 80 AWalker 192.168.0.100 200 0 0 764
2012-11-28 22:25:26 192.168.0.21 POST /Main.aspx - 80 AWalker 192.168.0.100 200 0 0 109
2012-11-28 22:25:56 192.168.0.21 GET /_Start.aspx - 80 AWalker 192.168.0.100 302 0 0 28782
2012-11-28 22:26:33 192.168.0.21 GET /Action.aspx - 80 AWalker 192.168.0.100 200 0 0 38032
2012-11-28 22:26:46 192.168.0.21 POST /Action.aspx - 80 AWalker 192.168.0.100 200 0 0 124
2012-11-28 22:27:39 192.168.0.21 GET /Information.aspx - 80 AWalker 192.168.0.100 200 0 0 52509
2012-11-28 22:27:52 192.168.0.21 POST /Information.aspx - 80 AWalker 192.168.0.100 200 0 0 140
如果我解释"时间" as" 请求" (无论是开始还是结束,但在响应开始之前),这看起来都是错误的。这就是我的意思:
这种模式在日志中一遍又一遍地持续着。
相反,如果我要解释"时间"字段表示"响应完成",然后我得到更健全的数字:
另一个原因是,对我来说,#34; time" field表示响应的结束,而不是请求的开头是这样的:
日志条目按照" time"的升序进行物理记录。字段(按时间顺序排列),但它们总是包含" time-taken"字段,只有在响应最终传递后才能知道。
那是哪条路?文档错了吗?
答案 0 :(得分:18)
在此页面上:http://blogs.msdn.com/b/mike/archive/2008/11/13/time-vs-time-taken-fields-in-iis-logging.aspx
它说:
时间字段非常简单:它指定何时创建日志条目。请注意,这并不总是与日志条目实际写入日志时相同,因为某些请求/响应方案可能会发生缓冲。
因此,您认为时间与请求完成的时间最为接近是正确的。同一页继续澄清:
如果您想计算请求的大致开始时间,您可以 从时间值中减去Time-Taken值。