如何在不超过分钟配额的情况下在Google App Engine上使用Java?
一个非常简单的doGet()servlet中的java代码在GAE上获得的CPU时间超过了一秒。 我已经阅读了一些与配额有关的文档,显然我没有做错任何事情。
//Request the user Agent info
String userAgent = req.getHeader("User-Agent");
我想知道最常用的是什么,我使用谷歌帮助推荐。
//The two lines below will get the CPU before requesting User-Agent Information
QuotaService qs = QuotaServiceFactory.getQuotaService();
long start = qs.getCpuTimeInMegaCycles();
//Request the user Agent info
String userAgent = req.getHeader("User-Agent");
//The three lines below will get the CPU after requesting User-Agent Information
// and informed it to the application log.
long end = qs.getCpuTimeInMegaCycles();
double cpuSeconds = qs.convertMegacyclesToCpuSeconds(end - start);
log.warning("CPU Seconds on geting User Agent: " + cpuSeconds);
上面的代码告诉我的唯一情况是,检查标题将使用超过一秒(1000毫秒)的cpu时间,这对Google来说是日志面板上的警告。 这似乎是一个非常简单的请求,仍然使用超过一秒的CPU。
我错过了什么?
在每个人的娱乐日志的图像下面。
Google App Engine慢速报告日志http://r2c.images.s3.amazonaws.com/forums/r2c-3-28-2010-001.jpg
为了所有人的利益,我发布了完整的代码。
@SuppressWarnings("serial")
public class R2CComingSoonSiteServlet extends HttpServlet {
private static final Logger log = Logger.getLogger(R2CComingSoonSiteServlet.class.getName());
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws IOException {
//The two lines below will get the CPU before requesting User-Agent Information
QuotaService qs = QuotaServiceFactory.getQuotaService();
long start = qs.getCpuTimeInMegaCycles();
//Request the user Agent info
String userAgent = req.getHeader("User-Agent");
//The three lines below will get the CPU after requesting User-Agent Information
// and informed it to the application log.
long end = qs.getCpuTimeInMegaCycles();
double cpuSeconds = qs.convertMegacyclesToCpuSeconds(end - start);
log.warning("CPU Seconds on geting User Agent: " + cpuSeconds);
userAgent = userAgent.toLowerCase();
if(userAgent.contains("iphone"))
resp.sendRedirect("/mobIndex.html");
else
resp.sendRedirect("/index.html");} }
App Engine上不再有每分钟的配额。 任何引用它们的消息都是过时的。 如果你想更好地分析你的CPU使用情况,你可能需要尝试新发布的Java appstats。
您的日志显示它有时只是缓慢。
你的servlet对象的构造真的很慢吗?
上面的代码告诉我的唯一情况是,检查标题将使用超过一秒(1000毫秒)的cpu时间,这对Google来说是日志面板上的警告。 这似乎是一个非常简单的请求,仍然使用超过一秒的CPU。
这是否也会在没有调用配额API的情况下发生?
链接地址: http://www.djcxy.com/p/45243.html上一篇: How to use Java on Google App Engine without exceeding minute quotas?