App Engine - 额外延迟来自哪里?

时间:2011-06-28 14:13:59

标签: java google-app-engine

我正在使用GAE / Java。我记录了我的代码执行所需的时间 在代码内部并将其作为调试消息输出到日志中。它的时间 我的代码执行通常只是时间的一小部分 在日志上显示为响应请求的总时间。

例如,在我的代码中,我的调试消息会说我的代码花了58毫秒 跑。但是日志行将显示:/ 421ms 130cpu_ms 20api_cpu_ms, 表示需要421ms才能返回响应。

这是典型的 每个请求,这不是由于加载请求。而且,我是唯一的 现在访问我的应用程序的人,并且日志不显示pending_ms值,所以这不是因为它正在等待另一个请求首先完成处理。

导致这种额外延迟的原因是什么?有什么办法可以解决吗?

编辑: 我从头开始创建了一个全新的应用引擎项目,试图看看它是我的应用程序的问题,还是只是应用程序引擎发生的事情。新项目有一个映射到/*的servlet,该servlet的代码是:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  long time = System.nanoTime();
  long x = 5;
  for (int i = 0; i < 1234567; i++) { x += i % 3 == 0 ? -i : i; }

  response.getWriter().write(request.getRequestURI().toLowerCase() + x);

  log.fine(getTime(time, "Total Time"));
}
static String getTime(long origtime, String id) {
  long diff = System.nanoTime() - origtime;
  long ret = diff / 100000;
  return id + ": " + ((double)ret / 10) + " ms";
}

结果:即使有这个超级简单的应用程序引擎项目,我也看到了相同的行为。将会有Total Time: 7.8 ms之类的日志输出,但日志行会显示存在明显更高的延迟,例如159ms 23cpu_ms。它并不总是这么糟糕,有时日志行将显示仅约40毫秒的延迟,而调试消息将显示约7毫秒的时间。

0 个答案:

没有答案