Windows客户端的JProfiler远程监控Linux上的Tomcat

1.测试环境
服务器:RedHat Linux 3.4.3-9.EL4(内核版本 2.6.9-5.EL),Tomcat5.5.20,Sun JDK 1.5.0_09,JProfiler 4.3.2 for linux(安装包:jprofiler_linux_4_3_2.sh)
客户端:Windows XP,JProfiler 4.3.2 for windows(安装包:jprofiler_windows_4_3_2.exe)

2.JProfiler软件下载地址 http://www.ej-technologies.com/

3.客户端 JProfiler 安装 略

4.服务器端 JProfiler 安装:
把 jprofiler_linux_4.3.2.sh 上传到到服务器,假设路径为 /opt/jprofiler

# cd /opt/jprofiler
# chmod +x *.sh
# ./jprofiler_linux_4.3.2.sh -c
按照提示来安装,提示都很简单,不在多说。安装路径选择 /opt/jprofiler4

注意,这里的 -c 意思是用字符方式来安装,如果机器上没有 X 则加上该参数.

5.客户端连接配置
1). 运行 JProfiler 。第一次打开会有向导,忽略它。
2). 选择 Session->Integration Wizard->New Remote Integratation
3). 选择 On a remote computer;Platform of remote computer 选择 Linux x86/AMD 64;Next
4). 输入服务器 IP ;Next
5). 输入服务器上的 jprofiler 的安装路径,如 /opt/jprofiler4 ;next
6). 选择服务器的 JDK 环境,这里是:Sun,1.5.0,hotspot;next
7). 输入端口:这里是默认值 8849;next
8). 选择启动模式:这里选第一种 wait for a connection from the jprofiler GUI;next
9). 这里会列出需要在服务器端做的配置:

Integration type: [Generic application]
Selected JVM: Sun 
1.5 . 0  (hotspot)
Startup mode: Wait 
for  JProfiler GUI

(
1 ) Please insert

- agentlib:jprofilerti = port = 8849    - Xbootclasspath / a: / opt / jprofiler4 / bin / agent.jar

into the start command of your remote application right after the java command.

(
2 ) Please add

/ opt / jprofiler4 / bin / linux - x86

to the environment variable LD_LIBRARY_PATH.

A remote session named Remote application on 
192.168 . 40.15  will be created that connects to a running instance of the remote application that is started with the modified start command.


6.服务器端的配置
(1)修改系统环境配置文件 /etc/profile ,增加

JPROFILER_HOME =/ opt / jprofiler4 / bin / linux - x86
export LD_LIBRARY_PATH
= $LD_LIBRARY_PATH:$JPROFILER_HOME


(2)修改TOMCAT启动文件catalina.sh,添加-agentlib:jprofilerti=port=8849  -Xbootclasspath/a:/opt/jprofiler4/bin/agent.jar 内容到CATALINA_OPTS中;
“-agentlib:jprofilerti=port=8849  -Xbootclasspath/a:/opt/jprofiler4/bin/agent.jar ” 此内容由客户端软件生成

CATALINA_OPTS = " $CATALINA_OPTS -Xms128m -Xmx128m $JPDA_OPTS -agentlib:jprofilerti=port=8849  -Xbootclasspath/a:/opt/jprofiler4/bin/agent.jar "


7.Reboot Linux and startup Tomcat using startup.sh;
   The log of tomcat which is $CATALINA_HOME/logs/catalina.out will show:

 JProfiler >  Protocol version  23
 JProfiler
>  Using JVMTI
 JProfiler
>   32 - bit library
 JProfiler
>  Listening on port:  8849 .
 JProfiler
>  Native library initialized
 JProfiler
>  Waiting  for  a connection from the  JProfiler GUI 

 

8.启动客户端软件
   点击jprofiler菜单 session>start center>Open Session
   Available session configurations中列出了刚才配置的连接,选中使用就OK了!!

9.The log of tomcat which is $CATALINA_HOME/logs/catalina.out will show:

 JProfiler >  Using dynamic instrumentation
 JProfiler
>  Time measurement: elapsed time
 JProfiler
>  CPU profiling enabled
 JProfiler
>  Hotspot compiler enabled
 JProfiler
>  Starting org / apache / catalina / startup / Bootstrap 

 

10.当中断JProfiler连接时
   The log of tomcat which is $CATALINA_HOME/logs/catalina.out will show:

 JProfiler >  Disconnected. Waiting  for  reconnection.
 JProfiler
>  Listening on port:  8849 .

  经过我的测试发现了有以上一些问题
1、
)并不是将-agentlib:jprofilerti=port=8849  -Xbootclasspath/a:/opt/jprofiler4/bin/agent.jar 加入到CATALINA_OPTS 中而是加入到 JAVA_OPTS中,加入格式如下所示:
其余步同上

  JAVA_OPTS = " $JAVA_OPTS  " -agentlib:jprofilerti = port = 8849  
  JAVA_OPTS
= " $JAVA_OPTS  " -Xbootclasspath/a:/opt/jprofiler5/bin/agent.jar

下面是我采用过的一个完整的配置

if  [  -r "$CATALINA_HOME"/bin/tomcat-juli.jar  ] ;  then
  JAVA_OPTS = " $JAVA_OPTS  " -Xms128m 
  JAVA_OPTS
= " $JAVA_OPTS  " -Xmx256m
  JAVA_OPTS
= " $JAVA_OPTS  " -XX:PermSize = 32m 
  JAVA_OPTS
= " $JAVA_OPTS  " -XX:MaxNewSize = 128m 
  JAVA_OPTS
= " $JAVA_OPTS  " -XX:MaxPermSize = 64m 
    JAVA_OPTS
= " $JAVA_OPTS  " -Dcom.sun.management.jmxremote
  JAVA_OPTS
= " $JAVA_OPTS  " -Dcom.sun.management.jmxremote.port = 9009
  JAVA_OPTS
= " $JAVA_OPTS  " -Dcom.sun.management.jmxremote.authenticate = false
  JAVA_OPTS
= " $JAVA_OPTS  " -Dcom.sun.management.jmxremote.ssl = false
  JAVA_OPTS
= " $JAVA_OPTS  " -agentlib:jprofilerti = port = 8849   
  JAVA_OPTS
= " $JAVA_OPTS  " -Xbootclasspath/a:/opt/jprofiler5/bin/agent.jar
  JAVA_OPTS
= " $JAVA_OPTS  " -Djava.util.logging.manager = org.apache.juli.ClassLoaderLogManager "   " -Djava.util.logging.config.file = " $CATALINA_BASE/conf/logging.properties "
fi

 

当时遇到的问题是jconsole无法连接上远程Linux上的JVM,Google看到Sun官方bugdatabase有人讲是bug,就没再理。今天再次Google,在java.sun.com/j2se/1.5.0/docs/guide/management/faq.html#linux2看到

Run "hostname -i" command. If it reports 127.0.0.1, JConsole would not be able to connect to the JVM running on that Linux machine. To fix this issue, edit /etc/hosts so that the hostname resolves to the host address.

马上修改/etc/hosts,连接成功了。对于上面提到“在一个jsp中进行while (true);死循环”的测试,一个个线程查看,发现有一个Thread在_jspService方法上始终处于Runnable状态。看来Programmer还是得用Google 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值