Профилирование приложения платформы Play (2.0.2) через VisualVM

У меня серьезные проблемы с моей игрой! Производительность приложений. Я уже пытался изменить сервер и базу данных, но медлительность сохраняется.

Используя Firebug для измерения моих HTTP-запросов, я обнаружил, что им требуется около 20 секунд, чтобы начать отвечать.

Итак, моя последняя надежда - использовать VisualVM для профилирования моего приложения и поиска его узких мест. Но я не знаю, как правильно передавать некоторые аргументы, такие как "-Dcom.sun.management.jmxremote", не вмешиваясь в глобальную переменную JAVA_OPTS.

Спасибо еще раз!


person Andre Rosot    schedule 25.07.2012    source источник


Ответы (2)


Похоже, что Metrics обрабатывает это автоматически.

Добавьте следующее в зависимости вашего приложения Build.scala:

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

И начните инструментировать свой код. Затем запустите приложение с помощью «play run» - VisualVM должен показать ваш процесс JVM, и вы можете просто подключиться к нему напрямую (при условии, что у вас есть плагин VisualVM-MBeans). Убедитесь, что у вас не ниже 1.3.4. Вот что я вижу при запуске:

VisualVM

xsbt.boot.Boot - это процесс загрузки.

В более общем плане эта статья действительно помогает при отладке. Фреймворки на основе Akka, такие как Play.

person Will Sargent    schedule 30.07.2012
comment
Ссылка на github мертва! - person ajay; 09.09.2014
comment
Да здравствует ссылка на github! - person fish; 30.10.2017

Если кому-то нужно профилировать приложение Play 2.3.x:

  1. Поместите настройки JAVA_OPTS в ~ / .activator / activatorconfig.txt (см. 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. В VisualVM добавьте локальное соединение JMX к localhost: 1234

person Rodrigo    schedule 04.07.2014