كيفية استخدام Java على محرك تطبيق Google دون تجاوز الحصص الدقيقة؟

StackOverflow https://stackoverflow.com/questions/2535607

  •  22-09-2019
  •  | 
  •  

سؤال

يحصل رمز Java بسيط للغاية داخل Doget () Servlet على أكثر من ثانية من وقت وحدة المعالجة المركزية على GAE. لقد قرأت بعض الوثائق المتعلقة بالحصص ويبدو أنني لا أفعل أي شيء خاطئ.

//Request the user Agent info
String userAgent = req.getHeader("User-Agent");

أردت أن أعرف ما الذي كان يستخدم وحدة المعالجة المركزية أكثر من غيرها ، وأنا أستخدم توصية مساعدة 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);

الشيء الوحيد الذي يخبرني به الرمز أعلاه هو أن فحص الرأس سيستخدم أكثر من ثانية (1000 مللي ثانية) من وقت وحدة المعالجة المركزية ، والتي بالنسبة إلى Google هي تحذير على لوحة السجل. يبدو أن هذا طلب بسيط للغاية ولا يزال يستخدم أكثر من ثانية من وحدة المعالجة المركزية.

ماذا أفتقد؟


أسفل صورة سجلات الترفيه للجميع.logs for Google App Engine Slow Reports

أقوم بنشر الكود الكامل ، لصالح الجميع.

@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");} }
هل كانت مفيدة؟

المحلول

لم يعد هناك أي حصص لكل دقيقة على محرك التطبيق. أي رسائل تشير إليهم قديمة. إذا كنت ترغب في القيام بتوصيف أفضل لاستخدام وحدة المعالجة المركزية الخاصة بك ، فقد ترغب في تجربة الإصدار حديثًا appstats لجافا.

نصائح أخرى

تظهر سجلاتك أنها بطيئة فقط في بعض الأحيان.

هل بناء كائن Servlet الخاص بك بطيء حقًا؟

الشيء الوحيد الذي يخبرني به الرمز أعلاه هو أن فحص الرأس سيستخدم أكثر من ثانية (1000 مللي ثانية) من وقت وحدة المعالجة المركزية ، والتي بالنسبة إلى Google هي تحذير على لوحة السجل. يبدو أن هذا طلب بسيط للغاية ولا يزال يستخدم أكثر من ثانية من وحدة المعالجة المركزية.

هل يحدث هذا أيضًا بدون مكالمات إلى واجهة برمجة تطبيقات الحصص؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top