JProfiler9.2进行本地和远程JVM的性能监控
jprofiler可以用于检测写出来的java程序,细化到线程和方法级别,能够可视化直观输出某个接口的调用树时间消耗状况,还可以帮助检测是否有内存泄露,实时显示内存和CPU使用情况等。是最近两天研究的一个profile工具,有了profile工具才能够帮助检查和确定 最近打算做的系统后台的缓存能够起到多大的作用。
JProfiler是商用软件,正常使用的话需要付费购买,不过可以从网上寻找sn号来免费使用。
一、JProfiler的下载安装
jp已经提供绝大部分操作系统的支持,包括windows、osx、Linux等,具体这次实验是在ubuntu15.04版本进行。
具体下载地址可以进入 jp的官网 http://www.ej-technologies.com/download/jprofiler/files。
Linux下载后的安装文件是一个.sh后缀文件(大概44m),而且默认并没有办法运行这个.sh文件,查看文件权限时发现并没有执行权限,需要手动地给这个文件加一个执行权限。
sudo chmod +x jprofiler_linux_9_2.sh
然后可以执行安装,运行.sh文件(双击.sh文件不行,需要在终端/shell窗口执行)
./jprofiler_linux_9_2.sh
然后就可以按照提示一步步进行配置,ubuntu系统有安装xserver可以有可视化的窗口配置,没有的话jp自动会使用控制台文本输出的方法引导按照(很多没有图形界面的Linux系统即以此方式安装)。
具体没有可视化的提示的安装过程可参考这一篇文章 http://hepeng19861212.iteye.com/blog/972267
下载安装完毕后,有一些教程会说需要配置Linux的环境变量,具体是设置一个JPROFILER_HOME,例如这是成功能跑的一个实例(手动配置)
JPROFILER_HOME=/home/gaoyong/jprofiler9/bin/linux-x86/
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$JPROFILER_HOME
其实起作用的还是LD_LIBRARY_PATH的配置,配置这个环境变量可以不独立配置一个JPROFILER_HOME,例如下面的一行配置是在另一个linux服务器的成功配置
export LD_LIBRARY_PATH=:/usr/local/jprofiler9/bin/linux-x64
这一行是服务器安装JProfiler9.2后自动对/etc/profile的修改。
需要注意的是不同的ubuntu系统默认安装的jprofiler的路径也不一样,安装的时候如果采用默认安装的话。这个跟安装jp的用户可能相关。
在自己的电脑上 用gaoyong这个用户登陆,安装的路径是 /home/gaoyong/jprofiler9
而在服务器的ubuntu上,用root用户登陆安装,安装的路径是 /usr/local/jprofiler9
安装完毕之后最为重要的几个文件,对于64位的Linux来说就是在/jprofiler9目录下的/bin/linux-x64 这个目录下面有两个so文件,是运行jprofile的时候依赖的 库连接文件(用C/C++写的编译生成的文件),对于32位的Linux就是在bin/linux-x86下对应的两个so文件。
还有一个很重要的jar文件,路径是/bin/agent.jar,比如在监控tomcat运行的jvm的时候需要有指定这个agent.jar文件。
二、本地启动tomcat的性能监控
网上有很多讲解jp对tomcat监控的,但是很多的说明和版本都对不上号,还可能导致加入一些不该有的变量设置,所以需要专门写下。
主要需要做的调整是tomcat的启动脚本的修改,在jprofile9当中提供了一个指定 startup.sh然后 jp会自动给你生成一个利用jp调试的sh文件,然后如果本地启动tomcat可以通过直接启动jp就可以 调用jp对应的启动sh文件(默认名字是startup_jprofiler.sh) 就可以启动tomcat进行调试。
【截图待添加】
三、远程tomcat的性能监控
如果想要使用jp对远程的tomcat或应用服务器进行性能监控,需要做一些准备:
1.本地的电脑已经配置ssh远程登陆 remote电脑的权限
2.remote电脑和本地电脑需要安装相同版本的jprofiler,不同版本可能会不行
3.remote电脑对应的jp运行端口(默认8849)需要打开,某些云服务器默认并不会打开http的这个入站端口,不容易发现。
远程监控tomcat的原理是两方面:
第一方面是配置remote 电脑安装配置jprofiler,然后配置remote端tomcat启动的脚本,jp可以帮助生成,其实也可以手动添加,这里是具体手动添加的最重要一段,在startup.sh当中添加了这么一段
# The following lines have been added by the
# application server integration wizard of JProfiler
CATALINA_OPTS="-agentpath:/usr/local/jprofiler9/bin/linux-x64/libjprofilerti.so=port=8849 $CATALINA_OPTS"
export CATALINA_OPTS
# end of modifications
这一段的配置其实是让tomcat在正常启动的时候附加了一个 agent,并说明附加的agent启动依赖的so文件的所在路径(/usr/local/jprofiler9/bin/linux-x64/libjprofilerti.so),以及agent占用8849作为端口,tomcat的启动脚本 catalina.sh这个脚本会继续处理这个配置了CATALINA_OPTS 之后接下来做的一系列动作,简而言之就是 正常tomcat启动之外,又添加了伴随的agent。
第二方面就是打开jp的客户端,进入配置的远程session。
当远程tomcat启动时,会发现跟普通的tomcat启动不同的就是多了jprofiler的一些启动参数说明,在tomcat启动后,本地jp客户端打开session就可以监控到服务器所运行的tomcat和内存cpu 线程等的具体运行状况。
配置遇到的问题:
1.本地配置tomcat,生成启动脚本,运行sh后 jp报错
Error occurred during initialization of VM Could not find agent library on the library path or in the local directory: jprofilerti
这个问题的原因有很多种:一种是配置LD_LIBRARY_PATH的路径不对,一种就是配置的路径不适合JVM的版本,比如实际是64位的JVM却配置成32位,另一种就是 多修改了tomcat的catalina.sh,在jp9.2版本根本不需要修改这个catalina.sh,自己遇到的这个问题就是因为参考一个 错误教程多添加下面的一行:
#CATALINA_OPTS="$CATALINA_OPTS -Xms128m -Xmx128m $JPDA_OPTS -agentlib:jprofilerti=port=8849 -Xbootclasspath/a:/home/gaoyong/jprofiler9/bin/agent.jar"
后来把这行注释掉就可以,这种配置可能是之前jp版本,却不适合9.2版本。
jprofiler的工作原理 【尚未理解,待补充】
官方说明文档:http://resources.ej-technologies.com/jprofiler/help/doc/
参考的几篇文章(有些讲解是有问题的,配图比较直观)
http://blog.csdn.net/chendc201/article/details/22897999
http://blog.csdn.net/catoop/article/details/48755581
http://www.cnblogs.com/sunxucool/p/4059040.html
http://it.100xuexi.com/view/otdetail/20120503/e82d2b3c-2762-44c8-94e8-5535ff9be682.html
http://os.51cto.com/art/201104/257153.htm
http://www.testwo.com/blog/36
JProfiler是商用软件,正常使用的话需要付费购买,不过可以从网上寻找sn号来免费使用。
一、JProfiler的下载安装
jp已经提供绝大部分操作系统的支持,包括windows、osx、Linux等,具体这次实验是在ubuntu15.04版本进行。
具体下载地址可以进入 jp的官网 http://www.ej-technologies.com/download/jprofiler/files。
Linux下载后的安装文件是一个.sh后缀文件(大概44m),而且默认并没有办法运行这个.sh文件,查看文件权限时发现并没有执行权限,需要手动地给这个文件加一个执行权限。
sudo chmod +x jprofiler_linux_9_2.sh
然后可以执行安装,运行.sh文件(双击.sh文件不行,需要在终端/shell窗口执行)
./jprofiler_linux_9_2.sh
然后就可以按照提示一步步进行配置,ubuntu系统有安装xserver可以有可视化的窗口配置,没有的话jp自动会使用控制台文本输出的方法引导按照(很多没有图形界面的Linux系统即以此方式安装)。
具体没有可视化的提示的安装过程可参考这一篇文章 http://hepeng19861212.iteye.com/blog/972267
下载安装完毕后,有一些教程会说需要配置Linux的环境变量,具体是设置一个JPROFILER_HOME,例如这是成功能跑的一个实例(手动配置)
JPROFILER_HOME=/home/gaoyong/jprofiler9/bin/linux-x86/
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$JPROFILER_HOME
其实起作用的还是LD_LIBRARY_PATH的配置,配置这个环境变量可以不独立配置一个JPROFILER_HOME,例如下面的一行配置是在另一个linux服务器的成功配置
export LD_LIBRARY_PATH=:/usr/local/jprofiler9/bin/linux-x64
这一行是服务器安装JProfiler9.2后自动对/etc/profile的修改。
需要注意的是不同的ubuntu系统默认安装的jprofiler的路径也不一样,安装的时候如果采用默认安装的话。这个跟安装jp的用户可能相关。
在自己的电脑上 用gaoyong这个用户登陆,安装的路径是 /home/gaoyong/jprofiler9
而在服务器的ubuntu上,用root用户登陆安装,安装的路径是 /usr/local/jprofiler9
安装完毕之后最为重要的几个文件,对于64位的Linux来说就是在/jprofiler9目录下的/bin/linux-x64 这个目录下面有两个so文件,是运行jprofile的时候依赖的 库连接文件(用C/C++写的编译生成的文件),对于32位的Linux就是在bin/linux-x86下对应的两个so文件。
还有一个很重要的jar文件,路径是/bin/agent.jar,比如在监控tomcat运行的jvm的时候需要有指定这个agent.jar文件。
二、本地启动tomcat的性能监控
网上有很多讲解jp对tomcat监控的,但是很多的说明和版本都对不上号,还可能导致加入一些不该有的变量设置,所以需要专门写下。
主要需要做的调整是tomcat的启动脚本的修改,在jprofile9当中提供了一个指定 startup.sh然后 jp会自动给你生成一个利用jp调试的sh文件,然后如果本地启动tomcat可以通过直接启动jp就可以 调用jp对应的启动sh文件(默认名字是startup_jprofiler.sh) 就可以启动tomcat进行调试。
【截图待添加】
三、远程tomcat的性能监控
如果想要使用jp对远程的tomcat或应用服务器进行性能监控,需要做一些准备:
1.本地的电脑已经配置ssh远程登陆 remote电脑的权限
2.remote电脑和本地电脑需要安装相同版本的jprofiler,不同版本可能会不行
3.remote电脑对应的jp运行端口(默认8849)需要打开,某些云服务器默认并不会打开http的这个入站端口,不容易发现。
远程监控tomcat的原理是两方面:
第一方面是配置remote 电脑安装配置jprofiler,然后配置remote端tomcat启动的脚本,jp可以帮助生成,其实也可以手动添加,这里是具体手动添加的最重要一段,在startup.sh当中添加了这么一段
# The following lines have been added by the
# application server integration wizard of JProfiler
CATALINA_OPTS="-agentpath:/usr/local/jprofiler9/bin/linux-x64/libjprofilerti.so=port=8849 $CATALINA_OPTS"
export CATALINA_OPTS
# end of modifications
这一段的配置其实是让tomcat在正常启动的时候附加了一个 agent,并说明附加的agent启动依赖的so文件的所在路径(/usr/local/jprofiler9/bin/linux-x64/libjprofilerti.so),以及agent占用8849作为端口,tomcat的启动脚本 catalina.sh这个脚本会继续处理这个配置了CATALINA_OPTS 之后接下来做的一系列动作,简而言之就是 正常tomcat启动之外,又添加了伴随的agent。
第二方面就是打开jp的客户端,进入配置的远程session。
当远程tomcat启动时,会发现跟普通的tomcat启动不同的就是多了jprofiler的一些启动参数说明,在tomcat启动后,本地jp客户端打开session就可以监控到服务器所运行的tomcat和内存cpu 线程等的具体运行状况。
配置遇到的问题:
1.本地配置tomcat,生成启动脚本,运行sh后 jp报错
Error occurred during initialization of VM Could not find agent library on the library path or in the local directory: jprofilerti
这个问题的原因有很多种:一种是配置LD_LIBRARY_PATH的路径不对,一种就是配置的路径不适合JVM的版本,比如实际是64位的JVM却配置成32位,另一种就是 多修改了tomcat的catalina.sh,在jp9.2版本根本不需要修改这个catalina.sh,自己遇到的这个问题就是因为参考一个 错误教程多添加下面的一行:
#CATALINA_OPTS="$CATALINA_OPTS -Xms128m -Xmx128m $JPDA_OPTS -agentlib:jprofilerti=port=8849 -Xbootclasspath/a:/home/gaoyong/jprofiler9/bin/agent.jar"
后来把这行注释掉就可以,这种配置可能是之前jp版本,却不适合9.2版本。
jprofiler的工作原理 【尚未理解,待补充】
官方说明文档:http://resources.ej-technologies.com/jprofiler/help/doc/
参考的几篇文章(有些讲解是有问题的,配图比较直观)
http://blog.csdn.net/chendc201/article/details/22897999
http://blog.csdn.net/catoop/article/details/48755581
http://www.cnblogs.com/sunxucool/p/4059040.html
http://it.100xuexi.com/view/otdetail/20120503/e82d2b3c-2762-44c8-94e8-5535ff9be682.html
http://os.51cto.com/art/201104/257153.htm
http://www.testwo.com/blog/36