【问题标题】:Adding Profiler script in tomcat server在 tomcat 服务器中添加 Profiler 脚本
【发布时间】:2012-07-24 11:23:35
【问题描述】:

我想使用 java profiler 来分析 tomcat 服务器。我的分析器从脚本 run.sh 运行,如下所示:

if [ -z "$JAVACMD" ] ; then
   if [ -n "$JAVA_HOME" ] ; then
      JAVACMD="$JAVA_HOME/bin/java"
   else
      JAVACMD="`which java`"
   fi
 fi

if [ ! -x "$JAVACMD" ] ; then
 echo "Error: JAVA_HOME is not defined correctly; cannot execute: $JAVACMD"
 exit 1
fi


java  -javaagent:lib/jborat-agent.jar \
 -Dch.usi.dag.jborat.exclusionList="conf/exclusion.lst" \
  -Dch.usi.dag.jborat.liblist="conf/lib.lst" \
   -Dch.usi.dag.jp2.outputFilePrefix="output" \
   -Dch.usi.dag.jborat.instrumentation="ch.usi.dag.jp2.instrument.AddInstrumentation" \
   -Dch.usi.dag.jp2.dumpers="ch.usi.dag.jp2.dump.xml.XmlDumper" \
     -Dch.usi.dag.jborat.codemergerList="conf/codemerger.lst" \
      -Xbootclasspath/p:./lib/Thread_JP2.jar:lib/jborat-runtime.jar:lib/jp2-runtime.jar/jp2.jar/jborat-agent.jar/jborat.jar $* 

有人可以指导我如何在 tomcat 中包含这个分析器吗?

是否可以在 catalina.sh 中编写类似 CATALINA_OPTS="$CATALINA_OPTS -javaagent:run.sh" 的内容?

我非常感谢您对此提供任何帮助。

谢谢。

我尝试将 run.sh (profiler) 的选项添加到 setenv.sh,如下所示,但不起作用。它没有给出任何错误,但服务器没有启动。我不知道为什么。

这是我的 setenv.sh 文件:

 #!/bin/sh
export CATALINA_OPTS="java -javaagent:lib/jborat-agent.jar \
 -Dch.usi.dag.jborat.exclusionList="conf/exclusion.lst" \
  -Dch.usi.dag.jborat.liblist="conf/lib.lst" \
   -Dch.usi.dag.jp2.outputFilePrefix="output" \
   -Dch.usi.dag.jborat.instrumentation="ch.usi.dag.jp2.instrument.AddInstrumentation" \
   -Dch.usi.dag.jp2.dumpers="ch.usi.dag.jp2.dump.xml.XmlDumper" \
     -Dch.usi.dag.jborat.codemergerList="conf/codemerger.lst" \
      -Xbootclasspath/p:./lib/Thread_JP2.jar:lib/jborat-runtime.jar:lib/jp2-runtime.jar/jp2.jar/jborat-agent.jar/jborat.jar "

【问题讨论】:

    标签: java tomcat profiling


    【解决方案1】:

    我已经回答了your exact same question yesterday。简而言之,你想要这个:

    $ export CATALINA_OPTS="-javaagent:lib/jborat-agent.jar -Xss256m -Xms256m  \ -Dch.usi.dag.jborat.exclusionList="conf/exclusion.lst" \ -Dch.usi.dag.jp2.dumpers="ch.usi.dag.jp2.dump.xml.XmlDumper" \ -Xbootclasspath/p:./lib/Thread_JP2.jar:lib/jborat-runtime.jar:lib/jp2-runtime.ja‌​r"
    $ $CATALINA_HOME/bin/startup.sh
    

    我不明白您为什么需要更多:您的脚本只是向 JVM 启动器添加了一堆系统属性:您可以使用 $CATALINA_OPTS 来做到这一点。如果您想永久设置它们,请将export 放入bin/setenv.sh,它会在您每次运行bin/startup.sh(以及bin/shutdown.sh)时自动运行。

    【讨论】:

    • 其实我以为我在之前的问题中并没有说清楚关于将分析器与tomcat一起使用的问题,所以又问了一遍。对此感到抱歉。我试过你说的方法,但是不行。它没有给出错误,但探查器没有产生输出。我认为原因是,在我使用的分析器中,一个人必须给出一个参数(你想要分析的内容(类文件或可运行的 jar 文件)。如果是 tomacat,我不知道该怎么做......我必须想办法。
    • 您使用的是什么分析器?谷歌搜索“java borat profiler”对我没有任何用处。
    • 我正在使用 jp2 profiler..你不会在谷歌上得到它。它的官方网站正在建设中。它没有被广泛使用,但它正是我想要的。
    • 如果你不能用系统属性配置它,那么它做你想做的事。您没有理由必须从它自己的 shell 脚本启动分析器。如果您想运行 Tomcat 的 bin/startup.sh,然后检查完​​整命令行的进程列表,如果绝对必要,您可能会复制它。但这完全是一件痛苦的事情,您需要让分析人员参与该程序并像其他人一样工作。
    • 从脚本启动探查器对我来说不是绝对必要的。正如您之前所说,我的分析器只是在 JVM 启动时设置了一些系统属性,我应该能够通过 CATALINA_OPTS 或 JAVA_OPTS 添加它。所以我在这里尝试过:正如你所建议的,我在 tomacat 的 bin 目录中创建了 setenv.sh 文件,并编写了系统属性需要由我的探查器设置为 CATALINA_OPTS。但在那之后,当我尝试启动服务器时,它不会在控制台上给出任何错误。但是当我在浏览器中访问 localhost:8080 时,它会继续尝试连接。一种无限循环。猜猜为什么会这样?谢谢。
    猜你喜欢
    • 1970-01-01
    • 2011-12-24
    • 1970-01-01
    • 1970-01-01
    • 2017-08-04
    • 1970-01-01
    • 2017-05-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多