7

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を使用しています。

私が欠けているものは何ですか?


みんなの娯楽のためのログの画像の下。 GoogleAppEngineの低速レポートのログ

すべての人の利益のために、私は完全なコードを投稿しています。

@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");} }
4

3 に答える 3

4

AppEngineに1分あたりの割り当てはなくなりました。それらを参照するメッセージはすべて古くなっています。CPU使用率のプロファイリングを改善したい場合は、新しくリリースされたJava用のappstatsを試してみてください。

于 2010-03-29T09:07:57.373 に答える
0

上記のコードでわかるのは、ヘッダーの検査に1秒(1000ミリ秒)以上のCPU時間が使用されることだけです。これは、Googleの場合はログパネルの警告です。これは非常に単純な要求のようですが、それでも1秒以上のCPUを使用しています。

これは、quota APIを呼び出さなくても発生しますか?

于 2010-03-29T03:18:42.683 に答える
0

あなたのログはそれが時々遅いだけであることを示しています。

サーブレットオブジェクトの構築は本当に遅いですか?

于 2010-03-29T03:33:49.490 に答える