Newrelic启动异常

时间:2013-12-09 15:16:15

标签: 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/newrelic/newrelic.jar; export NR_JAR
JAVA_OPTS="$JAVA_OPTS -javaagent:$NR_JAR"; export JAVA_OPTS

catalina.out中的app重启异常:

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

7 个答案:

答案 0 :(得分:3)

我刚遇到同样的问题。不太有用的错误消息暗示了newrelic代理(或者更确切地说是运行我的服务器的用户)无法写入/ tmp的事实。也许这有帮助!

答案 1 :(得分:3)

我最近使用该堆栈跟踪命中了该异常,在我的情况下,它是由根本不存在的临时目录引起的。

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

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

答案 2 :(得分:0)

确保newrelic.yml在与.jar

相同的目录中放置并标记为可读

答案 3 :(得分:0)

我为New Relic工作。

正如您从上面的答案中看到的,这种消息可能有多种原因 - 其中一些非常意外。由于此论坛不是针对事件的来回消息传递,如果前两个答案都没有为您解决问题,您最好的选择是在http://support.newrelic.com打开支持票,我们可以在那里要求查看您的日志文件并根据需要收集调试日志。

答案 4 :(得分:0)

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

答案 5 :(得分:0)

保存问题。 但我发现了这个:

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。

答案 6 :(得分:0)

如果您在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

希望这个帮助