我正在尝试弄清楚 IIS 日志中不同列的确切含义。尤其是时间和所用时间的值
| date | time | s-port | sc-status | sc-win32-status | time-taken |
|------------|----------|--------|-----------|-----------------|------------|
| 15.03.2018 | 08:59:59 | 80 | 200 | 0 | 15 |
| 15.03.2018 | 08:59:59 | 80 | 200 | 0 | 0 |
| 15.03.2018 | 09:00:10 | 80 | 200 | 0 | 9921 |
| 15.03.2018 | 09:00:14 | 80 | 200 | 0 | 13687 |
| 15.03.2018 | 09:00:15 | 80 | 200 | 0 | 15000 |
| 15.03.2018 | 09:00:47 | 80 | 200 | 64 | 47000 |
时间列似乎实际上表示请求何时完成,所用时间表示花费了多长时间。因此,要准确测量请求到达的时间,我们必须计算时间 - 所用时间 = 请求到达。对吗?
答案1
该time-taken
字段显示 HTTP.sys 完全处理该请求所需的时间长度。
时间戳client-request
在 HTTP.sys 初始化时接收第一个字节请求的时间戳(因此此处包括网络延迟)。HTTP.sys 是负责 IIS 活动 HTTP 日志记录的内核模式组件。时间戳client-request
已初始化前HTTP.sys 开始解析请求。
client-request
当最后一个(HTTP-)响应发生时停止。
所以答案是肯定的,也是否定的。是的,现在是要求到达 HTTP.sys,不,如果您想要 IIS 的回复时间,这不是测量的时间。例如,一个带有 2MB 有效负载的 POST 请求将比一个短的 WebDAV 保持活动消息花费更长的时间才能到达您的应用程序(花费的时间)。但两者都有相同的“时间”戳。如果您从另一个中减去一个,那么长请求在发送之前就已经“存在”了。