在Tomcat中启用Flight Recorder会在初始化JFR时导致"错误"

时间:2015-09-17 22:04:53

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

-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。

1 个答案:

答案 0 :(得分:4)

Flight Recorder尝试创建存储库目录,以便在录制时存储临时数据。

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