【问题标题】:Enabling Flight Recorder in Tomcat causes "Error when initializing JFR"在 Tomcat 中启用飞行记录器会导致“初始化 JFR 时出错”
【发布时间】:2015-09-17 22:04:53
【问题描述】:

-XX:+FlightRecorder 添加到我的 CATALINA_OPTS 会导致我的 catalina.out 日志中出现此错误:

Error when initializing JFR. JFR will be deactivated.

java.lang.Exception: Unable to create JFR repository directory using base location (/var/cache/tomcat6/temp).
        at oracle.jrockit.jfr.Repository.create(Repository.java:62)
        at oracle.jrockit.jfr.Repository.<init>(Repository.java:26)
        at oracle.jrockit.jfr.JFRImpl.<init>(JFRImpl.java:108)
        at oracle.jrockit.jfr.VMJFR.<init>(VMJFR.java:55)
        at oracle.jrockit.jfr.VMJFR.create(VMJFR.java:393)
        at oracle.jrockit.jfr.JFR.init(JFR.java:91)
Error occurred during initialization of VM
Failed to start tracing backend.

这是来自/usr/share/tomcat8/bin/setenv.sh 的完整 CATALINA_OPTS:

export CATALINA_OPTS="-Dcom.sun.management.jmxremote=true \
              -Dcom.sun.management.jmxremote.port=9090 \
              -Dcom.sun.management.jmxremote.ssl=false \
              -Dcom.sun.management.jmxremote.authenticate=false \
              -Djava.rmi.server.hostname=10.202.210.173 \
              -XX:+UnlockCommercialFeatures -XX:+FlightRecorder"

如果我只启用-XX:+UnlockCommercialFeatures 参数,tomcat 实例不会崩溃,但只要我启用 FlightRecorder,它就会崩溃。我也用 JAVA_OPTS 尝试过,我得到了相同的结果。

我只是按照互联网上的教程为 Tomcat 启用 Flight Recorder,所以我真的不知道我做错了什么。一切对我来说都是正确的。

这是在 64 位 CentOS 6.4 机器上,带有 Tomcat 8。

【问题讨论】:

    标签: java tomcat tomcat8 catalina java-mission-control


    【解决方案1】:

    Flight Recorder 尝试创建一个存储库目录以在记录时存储临时数据。

    基本目录是系统属性java.io.tmpdir指向的目录。由于某种原因,Java 进程无法访问或在那里创建目录。也许Java进程没有权限?

    【讨论】:

    • 在这种情况下,我猜设置 -XX:FlightRecorderOptions=repository= 可能会有所帮助。
    • 完美运行。 Tomcat 没有 root 权限。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2023-04-03
    • 2022-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-02
    • 1970-01-01
    相关资源
    最近更新 更多