日志中的“时间”字段到底表示什么?

2024-05-17

我在一台存在一些性能问题的服务器上研究了 IIS 7.5 中的 W3C 格式日志文件一段时间,在我看来,与MSDN 文档 http://technet.microsoft.com/en-us/library/cc754702%28WS.10%29.aspx,“时间”字段是not

“请求发生的时间,以协调世界时 (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

如果我将“时间”解释为“收到请求“(无论是开始还是结束,但在响应开始之前),那么这看起来是错误的。这就是我的意思:

  • 22:25:17,收到 /Main.aspx 的 GET,并且花了 764ms 才传递响应,这意味着响应直到 14:25:17.764 才完成。
  • 14:25:26,收到/Main.aspx 的POST。这是上一个响应完成后的八秒。发送此响应花了 109 毫秒,于 14:25:26.109 结束。
  • 14:25:56,收到/_Start.aspx的GET。距上一次响应结束已近 30 秒。这似乎是合适的;用户在单击 _Start.aspx 链接之前可能已经研究过 Main.aspx。奇怪的是,这个 302 重定向响应花了近 29 秒(28782 毫秒),在 14:26:24.782 结束。但这就是我查看日志以找出原因的原因。
  • 14:26:33,收到/Action.aspx 的 GET。距离上次响应完成大约 8 秒。这似乎是合适的(8 秒用户响应时间)。响应花费了 38032 毫秒(太长了,因此需要进行调查),并于 14:27:11.032 结束。
  • 14:26:46,收到/Action.aspx 的 POST。也就是8.2秒before之前的回复结束了。是的,我完全意识到用户并不总是需要等待页面完全呈现,然后再单击链接获取下一页或按“刷新”,但这种情况经常发生,即使对于较短的请求也是如此。响应耗时 124 毫秒,于 14:26:46.124 结束。
  • 14:27:39,收到/Information.aspx的GET。这是上次响应完成后 52.9 秒。这看起来有点长,因为测试人员被告知要尽可能地使用系统,但这并不算长。响应花费了 52509 毫秒(几乎正好 52.9 秒!),于 14:28:31.509 结束。这是一个非常奇怪的巧合 常常 如果我将时间字段解释为“收到请求”。
  • 14:27:52,收到/Information.aspx 的POST。也就是 39.5 秒before之前的回复结束了。

这种模式在日志中不断出现。

相反,如果我将“时间”字段解释为“响应完成”,那么我会得到更理智的数字:

  • 大约在 14:25:16.236(14:25:17 前 764ms),收到了 /Main.aspx 的 GET,并花了 764ms 来传递,在 14:25:17 完成了响应。
  • 大约 14:25:25.891,收到 /Main.aspx 的 POST。距离上次响应完成大约 8.9 秒。发送此响应花了 109 毫秒,于 14:25:26 结束。
  • 大约 14:25:27.218,收到了 /_Start.aspx 的 GET。这是上一个响应完成后 1.2 秒。这对于用户响应来说是很快的,但对于这些训练有素的测试人员在众所周知的菜单中导航来说并不算太多。响应花费了 28,782ms(太长了,但这就是性能分析的原因),并在 14:25:56 结束。
  • 大约在 14:25:54.968,收到了 /Action.aspx 的 GET。大约1.0秒before之前的回复已经结束了。这可能是一个舍入错误,因为时间字段不捕获毫秒。响应耗时 38032ms,于 14:26:33 完成。
  • 大约 14:26:45.876,收到 /Action.aspx 的 POST。距离上次响应完成大约 12.9 秒。对于用户响应时间来说这是很正常的。响应耗时 124 毫秒,于 14:26:46 完成。
  • 大约 14:26:46.491,收到了 /Information.aspx 的 GET。这距离上次响应完成大约 0.5 秒。这可能是脚本启动的重定向或快速用户。响应耗时 52509 毫秒,于 14:27:39 结束。页面缓慢。
  • 大约 14:27:51.860,收到 /Information.aspx 的 POST。这距离上一次响应完成大约 12.9 秒。正常用户响应时间(恰好与之前的 POST 相同)。响应耗时 140 毫秒,于 14:27:52 结束。

“时间”字段代表响应的结束而不是请求的开始对我来说更有意义的另一个原因是:

日志条目以“时间”字段的升序(按时间顺序排列)物理记录,但它们始终包含“耗时”字段,该字段只能被知道after答复终于得到了。

那么是哪条路呢?文档有误吗?


在本页面:http://blogs.msdn.com/b/mike/archive/2008/11/13/time-vs-time-taken-fields-in-iis-logging.aspx https://web.archive.org/web/20160304052659/http://blogs.msdn.com/b/mike/archive/2008/11/13/time-vs-time-taken-fields-in-iis-logging.aspx

it says:

时间字段非常简单:它指定日志条目的创建时间。请注意,这并不总是与日志条目实际写入日志时相同,因为某些请求/响应场景可能会发生缓冲。

因此,您认为时间与请求完成的时间最接近是正确的。同一页继续澄清:

如果您想计算请求的大致开始时间,您可以 从时间值中减去所用时间值。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

日志中的“时间”字段到底表示什么? 的相关文章

  • JavaMail 的 DCH 类错误

    我正在尝试使用 Glassfish 3 1 提供的 jar 文件在 Java EE 6 中使用 JavaMail 设置一个简单的日志记录测试 关于这个主题似乎有很多问题 但我还没有找到任何有帮助的答案 我的测试代码如下所示 import j
  • IIS 7 规范 URL 重定向

    我想让一个网站的地址中始终包含 www 并通过 IIS 重写强制执行 例如 test com 将变为 www test com 典型的重写规则示例是
  • 如何使用 Fluent 为 Elasticsearch 添加时间戳和密钥

    我已经配置了 fluidd 和 elasticsearch 它们都工作正常 我正在跟踪一个文件 然后读取其数据并将其发布到elasticsearch 下面是json数据 time 2018 05 14T11 37 30 339593 Dat
  • /proc/kmsg 和 dmsg 有什么区别?

    我们通常这样做cat proc kmsg or dmesg从用户空间查看内核日志 我明白了dmesg是一个循环缓冲区 它从kmsg 但是kmsg也不是循环缓冲区 它们之间有什么区别和联系呢 宽松地说 dmesg 是一个转储 proc kms
  • 对注册表项“全局”的访问被拒绝

    在向 defaultAppPool 用户授予权限时 我收到消息 没有这样的全局用户或组 DefaultAppPool 有人能帮我一下吗 但是 使用命令 net localgroup Performance Monitor Users Def
  • 如何在 JBoss 上记录 IP 地址

    我想记录呼叫我的 WS 的客户端的 IP 地址 我怎样才能在 JBoss 上做到这一点 EDIT 如果可能的话 我想在 JBOSS 上使用 log4J 配置 将以下内容附加到 log4j 配置 xml 中的转换模式参数 X RemoteAd
  • 通过 Gradle 进行测试时记录日志

    在测试时 Gradle 似乎将 stdout stderr 重定向到project dir build reports tests index html 有没有办法避免这种重定向 并将内容打印到控制台 附加信息 这是一个 Scala 2 9
  • PerformanceCounter.NextValue() 抛出 InvalidOperationException

    这是创建性能计数器的代码 var ftpPerfCounter new PerformanceCounter FTP Service Current Connections Total 这是异常发生的地方 int cnt int Math
  • C# 中的日志文件锁定问题

    我有一个 Windows 服务 它将日志文件条目写入 XML 日志文件 我在服务运行时维护日志文件的句柄 并在服务停止时关闭 刷新和处置它 文件写入操作仅由服务执行 并且我在 FileAccess ReadWrite 中打开文件流 同时将共
  • 经典 ASP 网站偶尔会挂起

    我们在 IIS 7 5 上有一个经典的 ASP 网站 用户随机遇到响应缓慢的情况 发生这种情况时 用户在几分钟内无法执行任何操作 这非常令人沮丧 例如 我可以打开主页 然后在类别中单击几次 然后网站就停止响应 我没有注意到网站何时停止响应的
  • 致命:Jenkins IIS ID 无效

    我正在尝试设置 Jenkins 从 bitbucket 中提取并构建一个项目 我在 IIS 8 5 Server 2012 r2 上使用它 我已经设置了 Git 和 Bitbucket 插件 我已经建立了一个包含以下内容的项目 Branch
  • 使用 Celery 时出现错误消息“无法找到记录器“多处理”的处理程序”

    RabbitMQ http en wikipedia org wiki RabbitMQ现在似乎工作正常 然而 当我尝试 python m celery bin celeryd loglevel INFO 常规的celeryd不起作用 我收
  • 当网站停止时,Oracle 数据提供程序会固定 IIS 工作进程

    我们在 Oracle 11g 第 2 版中遇到了一个严重的问题 其中 w3wp 进程接管了整个处理器核心 并且调试显示 Oracle 数据提供程序无限地抛出 ThreadAbortException 开发人员通过执行以下操作发现了此问题 1
  • 如何使用 logger 命令记录到 Linux 中的特定文件?

    我将运行以下脚本 bin bash myprogram get exit code exitvalue log exit code value to var log messages logger s exit code of my pro
  • “thread._local”对象没有属性

    我试图通过添加上下文过滤器来更改日志记录格式 我的格式是这样的 FORMAT asctime s VAL s message s 这是我用来设置格式中的 VAL 的类 class TEST def init self val self te
  • 无法在 Windows 8 上的 IIS 中提供 WCF 服务

    当我尝试在 Windows 8 计算机中的 IIS 上提供 WCF 服务时 出现众所周知的错误 由于扩展配置的原因 无法提供您请求的页面 如果页面是脚本 请添加处理程序 如果应下载该文件 请添加 MIME 映射 旧的解决方法是运行aspne
  • 我们可以在运行时更改 log4j 的日志记录级别吗

    我有一个问题 我想在运行时更改 log4j 的日志记录级别 我已经尝试了 log4j properties 文件的很多操作 我还尝试编写一段代码 在特定时间后再次读取属性文件并再次配置记录器 但问题是 我想将一个 API 调用的日志记录级别
  • 如何在Mac上启动Syslogd服务器以接受远程日志记录消息?

    有人知道如何在 Mac 上启动 Syslogd 服务器来接受远程日志记录消息吗 我启动了 Syslogd 但似乎它不接受远程消息 如果我执行 netstat an 看起来 udp 端口 514 正在侦听 但是 如果我使用 nmap 从笔记本
  • IIS 7.5 托管的 WCF 服务仅针对大型请求抛出 EndpointNotFoundException 和 404

    我有一个 WCF REST 服务托管在 IIS 7 5 Windows 2008 R2 上 该服务按预期工作 除非客户端尝试发送大于 25 MB 的消息 具体来说 当发送大小约为 25 MB 的消息时 服务会正确接收并处理消息 而当发送大小
  • Coldfusion 10、IIS 7.5 - 即使文件存在也收到 404

    即使该页面存在于磁盘上 我也收到 404 错误 我已经运行了 Web 服务器配置工具并重新启动了几次 cfm 文件的处理程序映射 配置工具似乎有效 C ColdFusion10 config wsconfig 1 isapi redirec

随机推荐

  • Socket.io 400(错误请求)

    我的服务器上有这段代码 var express require express var routes require routes var user require routes user var http require http var
  • Flash Builder 条件编译变量

    我正在使用 Flash Builder 4 5 并且我想在调试和发布版本之间使用条件编译 我了解如何使用条件编译以及如何定义编译器常量 我需要的是 IDE 在调试和发布版本之间设置的预定义常量 一种在调试和发布版本之间为编译器指定不同参数的
  • 受约束泛型类型参数的继承

    我知道不可能从泛型类型参数继承 但是在为抽象类型的派生类实现通用代理时会很方便 有谁知道为什么这是不可能的 C 示例 abstract class Foo public virtual void Bar nop class FooProxy
  • vscode 中 TAB 和 ENTER 的问题

    我已经使用 Visual Studio 代码几个月了 我喜欢它 但是 有一件事让我抓狂 我厌倦了处理 VSCode 有一个可怕的习惯 当我在输入结束时按 TAB 或 ENTER 时 它会更改我的文本 例如 假设我正在写一些东西 并且想要在几
  • 维护/更新mysql中的记录顺序

    我在 mySql 中有一个记录表 我需要按照用户指定的方式维护它们的订单 所以我添加了一个 位置 列 当我移动特定记录时更新所有记录的 SQL 语句是什么 我有类似的东西 UPDATE items SET position 2 WHERE
  • 使用 Socket.io 向多个房间发送消息?

    是否可以使用socket io向多个房间发送消息 发送至 1 个房间 io sockets in room emit id 发送到N个房间 io sockets in room1 room2 roomN emit id 是的 可以同时发送到
  • 如何使用 WebResponse 下载 .wmv 文件

    我使用以下代码通过 WebResponse 获取 wmv 文件 我正在使用一个线程来调用这个函数 static void GetPage object data Cast the object to a ThreadInfo ThreadI
  • 为什么AES java解密返回额外的字符?

    请原谅我英语不好 我使用 mcrypt 我从这里得到它用于 php 和 java 的 MCrypt https snipt net raw ee573b6957b7416f28aa560ead71c3a2 nice 在我的android应用
  • 从 API 网关自定义授权方返回的 401 缺少“Access-Control-Allow-Origin”标头

    为了防止未登录的用户通过 AWS API Gateway 调用我的 lambda 函数 我使用自定义授权者 lambda 解决方案 如果请求被授权 200 并且我从被调用的 lambda 得到响应 一切正常并且我得到Access Contr
  • PHP解析xml文件错误

    我正在尝试使用 simpleXML 来获取数据http rates fxcm com RatesXML http rates fxcm com RatesXML Using simplexml load file 我有时会遇到错误 因为这个
  • 在 PHP 中将 CSV 写入不带括号的文件

    是否有本机函数或实体类 库用于将数组写入 CSV 文件中的一行而无需封装 fputcsv将默认为 如果没有为封装参数传入任何内容 谷歌让我失望了 返回一大堆有关的页面的结果 fputcsv PEAR 的库做的事情或多或少与fputcsv 工
  • React Image:createObjectURL 链接给出错误 404(未找到)

    我在 React with Typescript 中使用以下代码创建了一个 ImageUrl 它创建了一个 URL 但不显示图片图像 单击 URL 例如 http localhost 3003 0b4de100 d8eb 49a7 b43a
  • 使用 rspec 测试嵌套路由

    我正在尝试使用 rspec 测试路由 以下给出了 预期块返回真值 的错误 我不确定我错过了什么 通过浏览器我可以发布到这个网址并且成功 有任何想法吗 谢谢 Routes resources forum topics do resources
  • Google Play Beta:“应用程序不适用于此帐户”消息

    有没有人遇到过所有成员都遇到的问题谷歌测试组能够获得测试版 除了一个问题之外没有任何问题 这位拥有有效 Gmail 地址的用户已加入用于 Beta 测试的 Google Grouped 作为管理员 我可以看到他们的状态是member 当他们
  • 关于加拿大短信网关提供商的建议[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我很好奇 如果我能够接受传入的短信到某个号码 然后将其传递给 PHP 中的服务器端应用程序 会带来多少麻烦 金钱 我最终会通过电子邮件地址发回短信 有
  • 如何在非 CSS3 浏览器上制作圆角?

    我知道在这种情况下我必须使用图像 每个角一个 例如 如果我需要给定元素周围有一个 4px 的纯蓝色边框 边框半径为 8px 我相应地设计了四幅图像 左上角 png 右上角 png 左下角 png 右下角 png 如果可能的话 我应该如何实现
  • 仅动态包含 javascript 文件一次

    我正在编写一个 javascript 函数 该函数用于包含外部 JS 文件 但仅一次 我需要这样一个函数的原因是 当通过 AJAX 加载某些内容时会调用它 并且我需要对该内容运行特定于页面的代码 不 只需使用 live不会覆盖它 这是我的尝
  • 使用 Stripe checkout.js 编辑信用卡

    Checkout from Stripe有一个很好的方法来添加信用卡进行交易 只需调用StripeCheckout open 是否可以使用 open to 编辑卡片 传入卡token 另外 哪里可以下载非压缩版本checkout js看到
  • 重新启动应用程序时出现异常 SIGKILL

    我在 iPhone 模拟器中构建并运行一个项目 我通过按主页按钮将其发送到后台 然后我双击主页按钮在后台找到我的应用程序并点击它 它变得活跃并且应用程序继续运行 在这里 无论我重复多少次 我都没有问题 然后我通过点击应用程序图标上的红色小减
  • 日志中的“时间”字段到底表示什么?

    我在一台存在一些性能问题的服务器上研究了 IIS 7 5 中的 W3C 格式日志文件一段时间 在我看来 与MSDN 文档 http technet microsoft com en us library cc754702 28WS 10 2