0

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

这个来自 App Engine 请求日志:

App Engine 请求日志

而这个是针对来自 Appstats 的相同请求:

应用统计时间表

这是我能够提取的测量值列表:

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 毫秒)的时间?为什么同一个请求有两个不同的时间戳?

非常感谢!

4

1 回答 1

0

appstats 与您的代码挂钩,在调用您的代码 (appstats) 之前以及在 appstats 退出之后会有一段时间。请记住,appengine 不会流式传输到客户端,但所有输出都会发送到某种缓冲区,然后传递到 appengine 基础架构进行交付。

请求的时间表将类似于

  1. 请求开始(您在日志中看到的开始时间)
  2. appstats 覆盖代码的开始
  3. appstats 覆盖代码的结尾
  4. 发送的最终响应(总持续时间)

看看 1 和 4 平均有多少会很有趣,这可能取决于运行时。

哦,appstats 本身会有一些开销,appstats 无法衡量,包括启动和最后的清理,这会影响 1 和 2 中的时间。

于 2014-02-10T11:27:13.497 回答