作为我构建的一部分,我们使用 cargo-maven2-plugin 通过我们的应用程序启动一个码头容器。间歇性地,我们得到“无法启动 Jetty 6.x Embedded 容器”的结果。我们遇到了默认的 120 秒超时。
我们使用的是 Sun 1.6.0_07 JVM,所以我认为hprof可能会有所帮助。
作为一个健全性测试,我从
set MAVEN_OPTS=%MAVEN_OPTS% -agentlib:hprof=cpu=samples,interval=20,depth=3,file=hprof.out
然后跑
mvn -Dmaven.test.skip=true install
(Cargo 配置为在 pre-integration-test 和 post-integration-test 目标期间运行)
这似乎是我想要的 - 我看到了启动和停止容器的消息,以及正在跳过测试的消息。在 maven 输出构建摘要后,我看到消息“Dumping CPI usage by sampling running threads ... done”。hprof.out 文件已写入,它具有我想要的样本数据类型。
当然,这是 maven 本身的一个示例,没有什么用处。
如何为我的 Web 应用程序获取相同的采样信息?
我最初的想法是使用cargo.jvmargs属性
<cargo.jvmargs>-agentlib:hprof=cpu=samples,interval=20,depth=3,file=hprof.out</cargo.jvmargs>
,但是(a)当我这样做时(从 MAVEN_OPTS 中删除分析参数),我找不到生成的 hprof.out 文件,并且(b)再次查看文档表明这些可能仅用于开始/停止容器,而不是容器本身?