我一段时间以来一直在研究IIS 7.5中的W3C格式日志文件,该服务器存在某些性能问题。与MSDN文档相反,我认为“时间”字段不是:
“请求发生的协调世界时(UTC)时间”
...而实际上它是响应完成发送的时间。
我之所以这样说是因为当我跟踪用户在某种受控环境下的页面请求序列时,他们必须回到过去才能提交下一个请求,否则他们可以以惊人的速度提交带有大量“time-taken”条目的页面请求。
例如(出于安全和清晰起见,我进行了删除、缩写和省略):
#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
如果我把“时间”解释为“请求接收”(无论是开始还是结束,但在响应开始之前),那么这看起来是错误的。如果我把“时间”解释为“响应完成”,则这些数字就是合理的。日志条目按“时间”字段的升序物理记录(按时间顺序排序),但它们始终包括“time-taken”字段,该字段只能在最终交付响应后才能知道。请问哪种解释正确?是否文档有误?这种模式一直在日志中重复出现。