代码之家  ›  专栏  ›  技术社区  ›  pauljwilliams

Apache日志行出现顺序错误-为什么?

  •  15
  • pauljwilliams  · 技术社区  · 15 年前

    我有一个ApacheWeb服务器,当某个用户访问某个页面时,我会得到一条日志行,它的时间戳不同步。

    样品输出:

    IP1 - - [22/Jun/2009:12:20:40 +0000] "GET URL1" 200 3490 "REFERRING_URL1" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)"
    
    IP2 - - [22/Jun/2009:12:11:47 +0000] "GET URL2" 200 17453 "-" "Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10.5; en-US; rv:1.9.0.11) Gecko/2009060214 Firefox/3.0.11"
    
    IP3 - - [22/Jun/2009:12:20:41 +0000] "GET URL3" 200 889 "REFERRING_URL2" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; GTB6; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; 3P_USEC 1.0.11.2; .NET CLR 3.5.30729; .NET CLR 3.0.30618)"
    

    (我匿名请求ip1、ip2和ip3,请求的url1、url2和url3,以及两个referer url)

    如图所示,这三行(按此顺序出现在日志中)不同步。只有当IP2请求URL2时才会发生这种情况-所有其他日志看起来都正常。

    有什么想法吗?

    2 回复  |  直到 15 年前
        1
  •  22
  •   David Rabinowitz    15 年前

    日志是在请求完成时写入的,因此早期的长请求可以在后期的短请求之后写入。将%d添加到巡更日志格式定义,以查看服务请求所用的时间(以微秒为单位)。

    查看更多 here

        2
  •  0
  •   Allain Lalonde    15 年前

    也许你在做彗星请求?

    我的第一个想法是日志只记录请求完成的时间?所以IP1的请求可能需要一段时间才能完成,但却在IP2之前到达。我只知道这样的请求是Ajaxey Comet请求。

    也许答案不正确,也许是个线索。

    编辑 : http://www.linuxquestions.org/questions/linux-networking-3/apache-log-entries-order-516354/ 确认日志中的时间包括将内容传输到浏览器所需的时间。