为什么Google App Engine日志中的请求时间与Appstats中的请求时间不同?

时间:2014-02-10 11:12:10

标签: google-app-engine appstats

我在Google App Engine上运行基于Java的HDR应用程序Appstats。现在,我对实际的App Engine请求日志和Appstats日志之间的时间值差异感到有些困惑。这些时间之间似乎有很大的差异。为了解释我的意思,我带了一些截图。它们都来自同一个请求。

这是来自App Engine请求日志:

App Engine Request Log

这个是来自Appstats的同一个请求:

Appstats Timeline

以下是我能够提取的测量列表:

Log Timestamp           10:10:33.156
Log "Total"                    147ms
Log "ms"                       147ms
Log "cpu_ms"                    86ms

Appstats Timestamp      10:10:33.072
Appstats "Grand Total"          39ms
Appstats "real"                 39ms
Appstats "RPC Total"            20ms
Appstats "api"                   0ms
Appstats "overhead"              0ms

如您所见,请求时间戳和运行时间存在很大差异:

Difference Log/AS Timestamps    84ms
Difference Log/AS Total        108ms (377%)

顺便说一句:虽然请求时间戳不一样,但它仍然是相同的请求:我按照Appstats发布到请求日志的链接,并对未使用的测试应用程序进行了此测试,以便我可以确保链接是正确的。

为什么Appstats告诉我,我的请求花了39毫秒,而GAE请求日志告诉我请求的时间长达3.8倍(147毫秒)?为什么同一个请求有两个不同的时间戳?

Thanksalot!

1 个答案:

答案 0 :(得分:0)

appstats被挂钩到你的代码中,在你的代码(appstats)被调用之前,以及appstats退出之后还有一段时间。请记住,appengine不会流向客户端,但所有输出都是某种缓冲区,然后传递给appengine基础设施进行传递。

请求的时间表类似于

  1. 请求开始(您在日志中看到的开始时间)
  2. 开始使用appstats代码
  3. appstats结尾的代码
  4. 发送最终答复(总持续时间)
  5. 看一下平均多少1和4会很有趣,这可能取决于运行时间。

    哦,appstats本身会有一些开销,不会被appstats测量,包括启动和最后清理,这有助于1和2的时间。