Pregunta

Una muy simple código java dentro de un servlet doGet () está recibiendo más de un segundo de tiempo de CPU en GAE. He leído alguna documentación relacionada cuotas y, aparentemente, no estoy haciendo mal nada.

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

Yo quería saber lo que estaba utilizando la CPU más, utilizo una recomendación Ayuda de 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);

La única cosa que el código anterior me dice es que la inspección de la cabecera va a utilizar más de un segundo (1000 ms) de tiempo de CPU, que para Google es un testigo en el cuadro de registro. Esa parece ser una petición muy simple y se sigue usando más de un segundo de la CPU.

¿Qué me falta?


Debajo de la imagen de los troncos para el entretenimiento de todos. registros de informes Slow Google App Engine

Estoy publicar el código completo, para el beneficio de todos.

@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");} }
¿Fue útil?

Solución

Ya no hay cuotas ninguna por minuto en App Engine. Cualquier mensaje que se refieren a ellos están fuera de fecha. Si usted quiere hacer un mejor perfilado de su uso de la CPU, es posible que desee probar el recién liberado AppStats para Java .

Otros consejos

Sus registros muestran que sólo es lento a veces.

Es la construcción de su objeto servlet muy lento?

  

La única cosa que el código anterior me dice es que la inspección de la cabecera va a utilizar más de un segundo (1000 ms) de tiempo de CPU, que para Google es un testigo en el cuadro de registro. Esa parece ser una petición muy simple y se sigue usando más de un segundo de la CPU.

¿Esto también sucede sin las llamadas a la API de cuota?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top