当我们使用配置的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
答案 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
希望这个帮助