2012-07-25 15 views
5

¡Estoy teniendo problemas serios con respecto a mi Play! Rendimiento de las aplicaciones. Ya intenté cambiar el servidor y la base de datos, pero la lentitud persiste.Perfilando una aplicación de Play Framework (2.0.2) a través de VisualVM

Al usar Firebug para medir mis solicitudes de http, descubrí que tardan unos 20 segundos en comenzar a responder.

Así que mi última esperanza es utilizar VisualVM para perfilar mi aplicación y encontrar sus cuellos de botella. Pero no sé la manera correcta de pasar argumentos como "-Dcom.sun.management.jmxremote" sin interferir con la variable global JAVA_OPTS.

¡Gracias nuevamente!

Respuesta

5

Parece que Metrics maneja esto automáticamente.

Añadir lo siguiente a sus dependencias de aplicaciones Build.scala:

"com.yammer.metrics" % "metrics-core" % "2.1.2" 

y empezar a instrumentar el código. Luego inicie la aplicación con "play run": VisualVM debería mostrar su proceso de JVM y puede conectarse directamente (suponiendo que tenga el complemento de VisualVM-MBeans). Verifique si tiene at least 1.3.4. Esto es lo que veo cuando inicio:

VisualVM

el proceso es xsbt.boot.Boot Reproducir.

De manera más general, este article realmente ayuda a depurar frameworks basados ​​en Akka como Play.

+2

¡El enlace github está muerto! – ajay

+0

¡Larga vida al enlace github! – fish

4

En caso de que alguien tiene que perfilar una aplicación Play 2.3.x:

  1. Ponga sus ajustes JAVA_OPTS en ~/.activator/activatorconfig.txt (cf https://typesafe.com/activator/docs):

     
    -Dcom.sun.management.jmxremote.port=1234 
    -Dcom.sun.management.jmxremote.rmi.port=1234 
    -Dcom.sun.management.jmxremote.authenticate=false 
    -Dcom.sun.management.jmxremote.ssl=false 
    -Djava.rmi.server.hostname=127.0.0.1 
    
  2. En VisualVM, agregue una conexión JMX local a localhost: 1234