我被要求调查 Playframework 2.2.3 应用程序的一些性能问题。我以前有玩框架 1 的经验,但我意识到 2.x 非常不同。
有没有人设法将 Yourkit profiler 与 play 2 一起使用?我设法通过在框架/构建脚本中的 java 命令中添加一个选项来附加代理。这只会将代理附加到 sbt 启动器,因此一旦启动真正的应用程序,代理就会死亡。
有人对此有解决方案吗?也许我需要使用'play dist'
乔恩
我被要求调查 Playframework 2.2.3 应用程序的一些性能问题。我以前有玩框架 1 的经验,但我意识到 2.x 非常不同。
有没有人设法将 Yourkit profiler 与 play 2 一起使用?我设法通过在框架/构建脚本中的 java 命令中添加一个选项来附加代理。这只会将代理附加到 sbt 启动器,因此一旦启动真正的应用程序,代理就会死亡。
有人对此有解决方案吗?也许我需要使用'play dist'
乔恩
一种方法是创建一个 dist 并从那里使用参数运行它,您将获得一个可运行的target/universal/stage/bin/yourappname
,您可以将参数传递给 withJAVA_OPTS
或-J-...
参数。
另一种方法是通过您的 sbt 配置提供相同的参数,然后将其传递给相同的脚本(开始只是构建和运行),请注意,由于它是脚本而不是实际的 jvm,因此您需要-J
任何前缀要发送到 JVM 的参数:
javaOptions in Production += "-J-something"
对于其他来这里了解如何让 Yourkit 与 IntelliJ 中的 Play 2x 一起工作的人 - 这是我根据接受的答案所做的快速总结:
1) 安装 Yourkit 并验证插件是否显示在 IntelliJ 中。
2) 安装 yourkit 后在 IntelliJ 中编辑我的运行配置,将以下内容添加到 JVM 选项:-agentpath:C:\PROGRA~2\YOURKI~1\bin\win64\yjpagent.dll
插入 yourkit 的路径( x86 有 win32)。我在使用 Windows 样式路径时遇到了麻烦,必须使用DOS 短版本才能工作。在这里您可以找到有关手动启用分析的手册!
使用 Play 2.4,您可以使用 SBT 插件sbt-yourkit为 Unix/Linux 系统(不在 SBT 中运行)上的生产发行版启用 YourKit 。这将添加适当的 YourKit 代理共享对象和启动标志,以允许 Play 在生产中使用代理。
代理将添加到由 生成的存档,或此处sbt dist
描述的其他构建目标。
添加插件的步骤如下:
将插件添加到您的 SBT 构建中,例如将以下内容添加到project/plugins.sbt
:
addSbtPlugin("com.gilt.sbt" % "sbt-yourkit" % "0.0.2")
将YourKit
AutoPlugin 添加到您的项目定义中,例如将以下内容添加到build.sbt
:
enablePlugins(YourKit)
更多信息可在上面的插件链接中找到。
注意:这不会在 Play 的开发模式下启用 YourKit 调试。如果您想在本地使用 YourKit 测试您的程序,可能最简单的方法是使用universal:stage
目标创建一个包含您的应用程序的目录 - 这通常会在 下创建一个目录<PROJECT_DIRECTORY>/target/universal/stage
,您可以运行您的应用程序(包括 YourKit 集成)从bin/
目录中的脚本。