四哥 2010-01-13
JProfiler是一个著名的用于java系统监控分析的软件,功能很强大,可以监控普通的javaapplication,applet,javawebstart,applicationserver等等。除了可以监控本地的程序,还可以对远程服务器上跑的应用进行监控。本文以JBoss为例,对JProfiler的安装、配置和使用做个简单介绍。先说一下环境:服务器:RedHatLinux3.4.3-9.EL4(内核版本2.6.9-5.ELsmp),JBoss4.0.3,SunJDK1.5.0_08,JProfiler4.3.2forlinux(安装包:jprofiler_linux_4_3_2.sh)客户端:WindowsXP,JProfiler4.3.2forwindows(安装包: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-cdefault1>$JBOSS_CONSOLE2>&1IntegrationWizard->NewRemoteIntegratation3.选择Onaremotecomputer;Platformofremotecomputer选择Linuxx86/AMD64;Next4.输入服务器IP;Next5.输入服务器上的jprofiler的安装路径,如/opt/jprofiler4;next6.选择服务器的JDK环境,这里是:Sun,1.5.0,hotspot;next7.输入端口:这里是默认值8849;next8.选择启动模式:这里选第一种waitforaconnectionfromthejprofilerGUI;next9.这里会列出需要在服务器端做的配置。上一步“服务器端的配置”我们已经做过了。如果在第8步选择了第二种启动方式Don'twiat,startimmediately,这里也会列出相应的服务器端配置方法,可以参考。next10.Finish此时session会被启动。在profilingsettings对话框里,不用做任何修改,ok即可。此时session被启动。观察一下服务器,发现JBoss也启动了。这时就可以在客户端看到jboss的运行情况,比如内存的占用等等。我用jprofiler主要是监控内存占用情况看是否有memberleak。点左侧的“VMTelemetryViews”可以看到jboss占用的内存情况。