【问题标题】:Server processing time in tomcat access logsTomcat访问日志中的服务器处理时间
【发布时间】:2014-05-12 11:53:32
【问题描述】:

为了调试性能问题,我在 tomcat 中启用了访问日志。我们没有使用任何 apache 服务器。它是我们正在使用的嵌入式 tomcat。

我正在使用以下模式来记录访问日志。

access-patten = %h %l %u %t "%r" %s %b %D

%D = 收到请求的第一个字节的时间 ~ 发送响应的最后一个字节的时间。

所以 %D 也包括网络延迟。

但是如何打印接收到的请求的第一个字节和发送的响应的第一个字节之间的时间差。

【问题讨论】:

    标签: tomcat access-log


    【解决方案1】:

    正如 Tomer 所述,自 Tomcat 版本 7.0.42 以来,AccessLogValve 实现中提供了一个新的日志元素“%F”。您可以在案例说明中找到更好的说明“%D”和“%F”的区别:

    Bug 55102 - 添加报告准备响应所用时间的功能:

    Tomcat 的 AccessLogValve 能够使用 %D 报告发送整个请求所花费的时间。这是总处理时间,可能会受到网络条件的影响。有时能够记录服务器准备响应并将第一个内容发送到客户端所花费的时间很有用。

    Attached 是一个记录响应提交时间的补丁,然后允许使用 '%F' 模式在访问日志中报告该时间(这与用于 HTTPD 的 mod-log-firstbyte 模块相同) )。

    【讨论】:

      【解决方案2】:

      怎么样:

      在第一个字节被写入之前的写入时间(提交时间),单位为毫秒 - %F

      来自AccessLogValve.html

      【讨论】:

        【解决方案3】:

        在我看来,access log的职责是记录程序本身的informs,也就是说tomcat是把程序包看成一个整体的,所以我们可能不能只得到字节的详细信息。

        如果您想获取应用程序日志记录详细信息,您可以记录程序 webapp 日志,可能是程序内部的 log4j 或 logback 日志记录详细信息。例如在程序开头的“System.currentTimeMillis()”,也添加到末尾。请使用您的 webapp 日志,但不要访问日志。

        谢谢,希望对你有帮助。

        【讨论】:

          猜你喜欢
          • 2017-11-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-01-14
          • 1970-01-01
          • 2013-03-24
          相关资源
          最近更新 更多