2010-08-19 6 views
3

Bonjour j'utilise une servlet qui contient un objet gestionnaire de persistance avec deux objets et quand je l'utilise dans le tableau de bord j'ai ce message:Avg Cpu, URI utilise une quantité de hauteur de cpu

« Cette URI utilise une hauteur montant de cpu et pourrait bientôt dépasser son quota. "

J'ai 2300 pour le Cpu avg pour cet uri, pourquoi ça prend si longtemps?

Quand je regarde le journal au début j'ai une grande quantité de cpu par exemple 2000 et après j'ai moins de 200 pourquoi?

Et 10 minutes plus tard quand je reviens j'ai une grande quantité de CPU à nouveau pourquoi?

Il pourrait être possible de réduire ce temps?

Edit: Code

publique vide doGet (HttpServletRequest req, resp HttpServletResponse) throws IOException {

String param1 = req.getParameter("param1"); 
    String param2 = req.getParameter("param2"); 

    PersistenceManager pm = PMF.get().getPersistenceManager(); 
    String query = "select from " + Myclass.class.getName()+ 
    "where parameter1 == param1 && parameter2 == param2 "+ 
    "parameters String param1, String param2"; 

List<Myclass> result = (List<Myclass>) pm.newQuery(query).execute(param1, param2); 

    if(result.isEmpty()) { 
     pm.close(); 
     resp.sendRedirect("/welcome.jsp"); 
    } 
    else { 
     pm.close(); 
     resp.sendRedirect("/question.jsp"); 
    } 
} 
+0

Il va être absolument impossible de savoir pourquoi votre code est tak beaucoup de temps processeur sans voir le code. –

+0

ok Je modifie mon message avec le code – ld493

Répondre

3

Cest à cause de cold starts de Google App Engine. Comme le moteur de google app fonctionne, il tue votre instance d'application si aucune requête n'est visible depuis un certain temps. Ainsi, la première demande après un certain repos prend plus de temps et les autres demandes sont relativement rapides.

Il y a beaucoup de discussions qui traitent de ce problème et les solutions possibles qui décrivent principalement deux solutions -

  1. Optimiser votre code pour les startups
  2. [Non recommandé] Création Cron ou tout autre type de requêtes HTTP périodiques Gardez l'instance opérationnelle. C'est une approche vraiment mauvaise et je ne la recommande pas parce qu'elle affecte négativement tout le but et l'idée du fonctionnement des nuages.

Voici quelques références qui traitent de plus sur ce problème:

  1. App instance recycling and response times - is there solution?
  2. Application instances seem to be too aggressively recycled
  3. Uneven response time between connection to server to first byte sent
  4. Google App Engine application instance recycling and response times…
+0

Merci pour votre réponse – ld493

+0

Il y a toujours une option activée maintenant dans GAE.https: //groups.google.com/group/google-appengine/browse_thread/thread/5d90718617eba542 – aronp