JProfiler 是一个著名的用于 java 系统监控分析的软件,功能很强大,可以监控普通的 java application, applet, java web start, application server 等等。除了可以监控本地的程序,还可以对远程服务器上跑的应用进行监控。本文以 JBoss 为例,对 JProfiler 的安装、配置和使用做个简单介绍。
先说一下环境:
服务器:RedHat Linux 3.4.3-9.EL4(内核版本 2.6.9-5.ELsmp),JBoss 4.0.3,Sun JDK 1.5.0_08,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)
客户端 JProfiler 安装:直接运行安装程序即可,没啥可说的。有一点就是安装过程中,norton 曾经报警,不理他,安完之后也没发现有什么问题
服务器端 JProfiler 安装:把 jprofiler_linux_4.3.2.sh 上传到到服务器,假设路径为 /opt/jprofiler4 (后文用 $JPROFILER_HOME指代)。用如下命令:
# cd
/
opt
/
jprofiler4 # chmod
+
x
*
.sh # .
/
jprofiler_linux_4.
3.2
.sh
-
c
按照提示来安装,提示都很简单,不在多说。安装路径选择 $JPROFILER_HOME 。注意,这里的 -c 意思是用字符方式来安装,如果机器上没有 X 则加上该参数。
服务器端的配置:
1. 修改系统配置,在 LD_LIBRARY_PATH 里加入 JProfiler 的库文件所在路径 $JPROFILER_HOME/bin/linux-x86 ,如果是 64 位服务器,则选择 $JPROFILER_HOME/bin/linux-x64。
2. 修改 JBoss 的启动脚本,加入如下参数:
-agentlib:jprofilerti=port=8849 -Xbootclasspath/a:$JPROFILER_HOME/bin/agent.jar
例如:
$JAVA_HOME
/
bin
/
java $JAVA_OPTS
-
agentlib:jprofilerti
=
port
=
8849
-
Xbootclasspath
/
a:
/
opt
/
jprofiler
-
4.3
.
2
/
bin
/
agent.jar
-
Djava.endorsed.dirs
=
"
$JBOSS_ENDORSED_DIRS
"
-
Djava.library.path
=
$JBOSS_HOME
/
server
/
default
/
lib
-
classpath
"
$JBOSS_CLASSPATH
"
org.jboss.Main
-
c
default
1
>
$JBOSS_CONSOLE
2
>&
1
</
dev
/
null
&
8849 是默认的端口号
3. 重新 login linux ,启动 jboss 。查看一下 $JBOSS_HOME/server/default/log/server.log ,可以看到 JBoss 并未启动,原因是上边的配置选择的启动模式,只有当一个 JProfiler GUI(指 Windows XP 下安装的 jprofiler )的监听请求发过来时候,JProfiler才会真正的启动被监控的应用程序也就是 JBoss 。另外有一种启动模式与此不同,它可以直接启动被监控的应用程序而不必等待。这种配置稍微麻烦一点,以后在说。
客户端的配置和使用:
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. 这里会列出需要在服务器端做的配置。上一步“服务器端的配置”我们已经做过了。如果在第 8 步选择了第二种启动方式 Don't wiat, start immediately ,这里也会列出相应的服务器端配置方法,可以参考。next
10. Finish
此时 session 会被启动。在 profiling settings 对话框里,不用做任何修改,ok 即可。此时 session 被启动。观察一下服务器,发现 JBoss 也启动了。这时就可以在客户端看到 jboss 的运行情况,比如 内存的占用等等。
我用 jprofiler 主要是监控内存占用情况看是否有 member leak 。点左侧的 “VM Telemetry Views”可以看到 jboss 占用的内存情况。