doGet()サーブレット内の非常に単純なJavaコードは、GAEで1秒以上のCPU時間を取得しています。私はいくつかのクォータ関連のドキュメントを読みましたが、どうやら私は何も悪いことをしていません。
//Request the user Agent info
String userAgent = req.getHeader("User-Agent");
CPUを最も使用しているものを知りたかったので、Googleヘルプの推奨事項を使用します。
//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);
上記のコードでわかるのは、ヘッダーの検査に1秒(1000ミリ秒)以上のCPU時間が使用されることだけです。これは、Googleの場合はログパネルの警告です。これは非常に単純な要求のようですが、それでも1秒以上のCPUを使用しています。
私が欠けているものは何ですか?
すべての人の利益のために、私は完全なコードを投稿しています。
@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");} }