首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于CI/CD平台的JDK飞行记录仪

基于CI/CD平台的JDK飞行记录仪
EN

Stack Overflow用户
提问于 2020-08-07 12:44:12
回答 2查看 48关注 0票数 1

目前,我在JDK 11中使用JDK飞行记录器,在CI/CD平台上遇到了一些麻烦。不幸的是,没有太多关于新的飞行记录器的文档,而是关于旧的,它仍然是在Java下开发的。当我尝试直接从IDE开始测试时,一切正常,我得到了我的记录文件。当我试图做同样的事情,自动,在CI/CD平台上,它会导致超时和许多不同的不确定的失败,其中包括:创建文件的困难,文件甚至没有写,等等。

我使用的JVM命令如下(为了获得更好的可读性,我添加了额外的空间):

  • -XX:+FlightRecorder
  • -XX:StartFlightRecording= name="UiTestServer", settings="profile", dumponexit=true, filename=""+System.getenv("CI_PROJECT_DIR") + "flightRecording/javaFlightRecorder.jfr"

这些命令与IDE在启动飞行记录时自动使用的命令相同,只需右键单击指定的测试。

有没有人知道,飞行记录仪是否有问题,这些系统或特定的服务,可能运行与它平行?我听说过一些分析工具,它们无法在CI平台上执行。

如果你需要更多细节,就问我吧。不过,可能会发生这样的情况:我无法告诉任何与项目有关的事情。

EN

回答 2

Stack Overflow用户

发布于 2022-06-20 15:06:59

虽然有点晚了,但JFR肯定可以在CI/CD环境中运行。我已经成功地将JFR附加到我们的JMH微基准,并将结果作为工件发表在亚特兰蒂斯竹中。我们的竹代理运行在AWS上,所以JFR本身应该适合大多数云环境。

票数 0
EN

Stack Overflow用户

发布于 2022-06-20 21:40:13

JFR是为在生产系统中工作而构建的,但是如果您希望保证低开销(<1%),则应该使用默认设置,而不是配置文件。

‘'profile’是一个较短的时间,即10分钟,在那里,它可能与额外的开销,以获得更多的洞察力。

对于JDK 11和更高版本,我建议这样做:

代码语言:javascript
复制
$ java -XX:StartFlightRecording:filename=/path 
  • 如果指定了文件名,则不需要设置dumponexit=true。
  • 只有在JDK 8u40之前才需要-XX:+FlightRecorder。
  • 如果您愿意,可以设置名称,但通常不需要它。如果要使用jcmd并转储记录,则可以省略名称。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63302145

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档