Java Newrelic启动异常

Java Newrelic启动异常,java,tomcat,newrelic,Java,Tomcat,Newrelic,当我们在配置了newrelic java代理的情况下重新启动应用程序时,catalina.out文件中出现以下错误 我们遵循了《newrelic安装指南》中指定的步骤,以下是newrelic安装程序在catalina.sh中创建的条目: # ---- New Relic switch automatically added to start command on 2013 Dec 09, 20:24:35 NR_JAR=/usr/share/fk-ops-tomcat6-base/newreli

当我们在配置了newrelic java代理的情况下重新启动应用程序时,catalina.out文件中出现以下错误

我们遵循了《newrelic安装指南》中指定的步骤,以下是newrelic安装程序在catalina.sh中创建的条目:

# ---- New Relic switch automatically added to start command on 2013 Dec 09, 20:24:35
NR_JAR=/usr/share/fk-ops-tomcat6-base/newrelic/newrelic.jar; export NR_JAR
JAVA_OPTS="$JAVA_OPTS -javaagent:$NR_JAR"; export JAVA_OPTS
catalina.out中的应用程序重启异常:

Error bootstrapping New Relic agent: java.lang.RuntimeException: java.io.IOException: No such file or directory
java.lang.RuntimeException: java.io.IOException: No such file or directory
        at com.newrelic.bootstrap.BootstrapLoader.load(BootstrapLoader.java:95)
        at com.newrelic.bootstrap.BootstrapAgent.premain(BootstrapAgent.java:93)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at sun.instrument.InstrumentationImpl.loadClassAndStartAgent(InstrumentationImpl.java:323)
        at sun.instrument.InstrumentationImpl.loadClassAndCallPremain(InstrumentationImpl.java:338)
Caused by: java.io.IOException: No such file or directory
        at java.io.UnixFileSystem.createFileExclusively(Native Method)
        at java.io.File.checkAndCreate(File.java:1704)
        at java.io.File.createTempFile(File.java:1792)
        at java.io.File.createTempFile(File.java:1828)
        at com.newrelic.bootstrap.BootstrapLoader.getJarFileInAgent(BootstrapLoader.java:81)
        at com.newrelic.bootstrap.BootstrapLoader.addBridgeJarToClassPath(BootstrapLoader.java:47)
        at com.newrelic.bootstrap.BootstrapLoader.load(BootstrapLoader.java:92)
        ... 7 more

确保newrelic.yml与.jar放在同一个目录中并标记为readable,因为我遇到了同样的问题。这条没有太大帮助的错误消息暗示了一个事实,即newrelic代理(或者说运行我的服务器的用户)无法写入/tmp。也许这会有帮助

我为New Relic工作


正如你从上面的答案中所看到的,这类信息可能有多种原因——其中一些是非常出乎意料的。由于此论坛不用于来回发送事件消息,如果前两个答案都不能为您解决问题,您最好打开一张支持票,在那里我们可以要求查看您的日志文件并根据需要收集调试日志。

我在使用apache 6.0.33版时也遇到了同样的问题。一旦我升级到7.0.53,一切正常。

我最近在堆栈跟踪中遇到了这个异常,在我的情况下,它是由根本不存在的临时目录引起的

特别是:默认情况下,tomcat使用
$CATALINA_BASE/temp
作为
java.io.tmpdir
属性的值,并在需要时创建该属性。然而,当newrelic代理启动时,它可能还不存在,因此newrelic代理会因该异常而失败

重新启动后一切正常(现在目录已存在!),但我在启动脚本中解决了以下问题: 1.将CATALINA_TMPDIR的值显式设置为我控制的值 2.在启动tomcat之前确保目录存在。

保存问题。 但我发现:

Sep 09, 2015 11:19:48 AM org.apache.catalina.startup.Catalina initDirs
SEVERE: Cannot find specified temporary folder at /mnt/apache-tomcat-7.0.56/temp
然后这样做:

mkdir /mnt/apache-tomcat-7.0.56/temp
cp /mnt/apache-tomcat-7.0.56/newrelic/* /mnt/apache-tomcat-7.0.56/temp
一切正常。
您可能不需要cp。

如果您在NewRelic异常之后查看Tomcat日志(catalina.out)的早期版本,您可以看到所需的缺少的文件夹。这是我的:

May 29, 2017 5:04:31 PM org.apache.catalina.startup.Catalina initDirs
SEVERE: Cannot find specified temporary folder at /var/log/tomcat/tomcat7/temp
May 29, 2017 5:04:32 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Server version:        Apache Tomcat/7.0.59

希望此帮助

是否将newrelic.yml与.jar放在同一目录中并标记为可读?newrelic.jar和newrelic.yml都位于同一目录中,该目录在父目录和单个文件上设置了777权限。是的,添加“set CATALINA_TMPDIR=N:/tmp”在catalina.bat中,如果您使用catalina.bat进行启动,并且tomcat位于访问受限的位置,如C:\Program Files