目前,我在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平台上执行。
如果你需要更多细节,就问我吧。不过,可能会发生这样的情况:我无法告诉任何与项目有关的事情。
发布于 2022-06-20 15:06:59
虽然有点晚了,但JFR肯定可以在CI/CD环境中运行。我已经成功地将JFR附加到我们的JMH微基准,并将结果作为工件发表在亚特兰蒂斯竹中。我们的竹代理运行在AWS上,所以JFR本身应该适合大多数云环境。
发布于 2022-06-20 21:40:13
JFR是为在生产系统中工作而构建的,但是如果您希望保证低开销(<1%),则应该使用默认设置,而不是配置文件。
‘'profile’是一个较短的时间,即10分钟,在那里,它可能与额外的开销,以获得更多的洞察力。
对于JDK 11和更高版本,我建议这样做:
$ java -XX:StartFlightRecording:filename=/path https://stackoverflow.com/questions/63302145
复制相似问题