版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
JProfiler在Linux上的安装和使用
一前百
前段时间网厅web服务老是OutOfMemoryError,查找了一些网站,找到一个应用监控
工具JProfiler,可以在本地机器上监控远程服务器上的应用。搭建环境的时候遇到了一些问
题,也查找了网上的一些资源,但都不太全面,现把自己的安装和使用过程记录下来,方便
后来人使用。
二环境介绍
服务器端
操作系统:linuxRedHatAS5
应用服务器:WebLogic9.2
java虚拟机版本:1.5.0.07
jprofiler版本:jprofiler_linux_5_l_4.sh(在csdn可以下载到)
客户端
操作系统:WindowsXpSP2
Jprofiler5.1.4forwindows(安装包:jprofi1erwindows514.exe在csdn
可以下载到)
三客户端JProfiler安装及配置
1.打开本地jprofiler
1-1
图1—1使用向导,我们可以选择Cancel
2.
1-2
选择session->lntegrationwizards->NewRemoteIntegration
3.
1-3
l)Theprofiledapplicationislocated选择Onaremotecomputer
2)Platformoftheremotecomputer选择LinuxX8&AMD64
3)Next
4.
Remoteaddress中写入所要监控的服务器IP地址
5
1-5
Installationdirectory中写入jprofller在服务器中的路径,比如/opt/jprofiler5(此路径为远
程服务器上jprofiler的安装路径)
6
1)
1-6-1
2)JVMVendor选择Sun
1-6-2
Version选择1.5.0,如果服务器操作系统是64位,需要勾选64bitjvm
3)Next
7
1-7
JProfilerport:写入8849默认
8
|JKDetached
1-8
选择WaitforaconnectionfromtheJProfilerGUI
9
JPrefiler4JflJxj
SessionViewProfilingGoToWindowHelp
MemcryV的
Heapwa3
CPUViews
ThreadWev/s
VMTeiemetryMews
"Detached
红框中内容设置环境变量时使用。
选择next
选No,Iwillstartthesessionlater因为我们还没有配置服务器端。
选择finish
服务器端JProfiler安装及配置
服务器端安装:
1.jprofiler_linux_5_l_4.sh上传到服务器/opt/路径下
2.如果安装包为.rpm,先执行apt-getinstallrpm;
3.安装jprofiler:rpm-ivhjprofiler_linux_4_3_2.rpm
4.如果安装包为.sh,直接执行
5.修改.bash_profile文件,新增内容类似如下(修改为自己服务器上的实际路径):
cxportLD_LIBRARY_PATH=/opt/jprofi1cr5/bin/linu:<-x86
exporiINSTAIJ.4J_JAVA_ll0ME=/weblogic/bea/jdkl50_10/jre
6.把C:\DocumentsandSettings'用户名\.jprofiler5\下的config,xml上传到远程服务揩上,
路径为本地客户端配置里第5步所设置的路径。比如/opt/jprofiler5下
7.修改weblcgic启动文件slarWebLcgic.sh.在黑字后面的位置.添加纤字部分的内容,汴意ccMig
文件的路径,以及agent.jar文件的实际路彳仝,要根据自己的实际路径进行修改。此处的id为
config,xml文件里的远程服务器所在配置项里的sessionid,也要根据config.xml里面的具体
sessionid进行修改。
-Dweblogic.Name=$(SERVERNAME}
-Djava.security,policy-$(WL_HOME}/server/1ib/wcblogic.policy$PROXYSETTINGS)
${SERVER_CLASS}*$(JAVA_HOME}/bin/java${JAVA_VM)${MEM_ARGS}${JAVA_0PTI0NS}
-Xrunjprofiler:port=8849,nowait,id=104,config=/wblogic/wss/jprofiler5/config.>:ml
-Xbootclasspath/a:/weblogic/jprofi1er5/bin/agent.jar
安装过程遇到的问题以及解决方法:
1.执行,报错:gunzip:sfx_archive.tar.gz:notingzipformal
Iamsorry,buttheinstallerfileseemstobecorrupted.Ifyoudownloadedthatfile
pleasetryitagain.Ifyoutransferthatfilewithftppleasemakesurethatyouarc
usingbinarymode.
解决方法:把ftp软件的Transfertype改为Binary,.重新上传。
2.执行jprofiler」inux_5_l_4.sh
DoyouwanttodownloadaJRE?(y/n)
n
报错:PleasedefineINSTALL4J_JAVA_H0MEtopointtoasuitableJVM.
解决方法:
cd
Is-al
vi.bash_profile文件,增加以下两行内容:(注意修改为自己远程服务器上实际的jre路径)
exportINSTALL4J_JAVAH0ME=/weblogic/bea/jdkl50^L0/jre
执行source.bash_profile使环境变量立即生效。
3.报错内容如下:
StartingInstaller
java.lang,reflect.InvocationTargetException
atjava.awt.Evenljueue.invokeAndWait(EventQueue.java:853)
atjavax.swing.SwingUti1ities.invokeAndWaiI(SwingUli1ilies.java:1257)
atcom.install4j.runtime,installer.Installer,main(UnknownSource)
Causedby:java.a*t.HeadlessException:
NoXllDISPLAYvariablewasset,butthisprogramperformedanoperationwhichrequires
CouldnotdisplaytheGUI.ThisapplicationneedsaccesstoanXServer.
IfyouhaveaccessthereisprobablyanX1ibrarymissing.
*******************************************************************
Youcanalsorunthisapplicationinconsolemodewithout
accesstoanXserverbypassingtheargument-c
*****************冬*************************************************
Anerroroccurred:
java.lang.RuuLimeExceplion
Errorlog:/tmp/instal14jError25068.log
解决方法:执行jprnfiler」inux_5_l_4.sh-c
五功能简介
在本地启动JProfiler,选择打开,选择配置好的远程服务器session。启动后会出现下面
的画面
Settings
Profilingsettings:Template:A*Featuresenabied,bytecode
Filtersettings:1filterruleformethodcallrecording
Triggersettings:Noactivetriggers
Startup
口RecordCPUdatacnstartup
口Recordallocationsonstartup
Performance
CPUusage:medium
Memoryusage:Jb/
或HelpOK||Cancel
点击OK进入
RIAPACIMToecfct5.»onloeoLL^xt(<)-JPr«fil«r5.I.
SesnionViewProfiinqGoTo世hdowHelp
再法这部0a③雀戈小
区
AAaareaatiorlevel:口梦纪s_____________________________
ivt3r3pjX▼]See
,/"Jew)pvaJongShng
【XIJ
ateesXl
占^va-utl.HashHapstrtry
reFkcl.Me*hod2/yi3>3
H33DWalef
1♦pvaAJd.Ma$htatf€$:rxryMBI,e”312Mes
Q23.H*…■■11,X7dg9Obgx
jy/axd.H帅也除帆。iwrdw■决。bibMes
byto(]■6501,431峭
CP」ViewspvoAjd.MohtaWc■60AMJMC
choe<]■S96系32bM
重gg3enwn:.刈wtnar印repeny■>,uy.idJbnes
pvaJongClass■SS230912b大”
TlreadViewsM】
3”J6gS»rngkj:Gr■50712ISSbvtw
r忘-a■叱&t>.«wb-/c«
dZ。心rP*«0urc*Erttry■“8l6720b-4«
jjva<utl.Array4.l5t1泗d.016bnes
*MTvkiiwUy¥wv&
orc«pxh«x«rc^<dom.D»:«<r4dMtrDn^■33410638bM
鼻心gnsems:.-K>jcftrtocdnDe$ci|p<oiSq)pat■我05420bn«
pvautl.H卦%M、|3104街Ob吠”
J&thod35cr即■32UUZObnes
or^.jp>±c.tomcat.Lblhttp.mapperMs^xT'/Aapct|2437.776bAts
JWJObpM叮双卜4irtf/|ZX)5.K0b>t«
nvnj/nj”fSrfHJMrr…re|?f164t>h*K
pvabeansPr^ertY?€$cnpccr|zco9.sob/e5
KSMIH.YM”IIM4416h”K
ofC.cPKne.ccm^ons.rroMer.KtnbuQlnro1172U.0D6bnes
华»4L1r0MVpfFWry|1依S4Fh"x
rc(kv.l.Cui>Uuilvr11957.4,01MG
1427
U»MllilU.'OAT3,FlcOirC34CK(5FAPc,UJf.2”.M710.5MbAo
ywggjMwr"hfTNnSHMgM"k”〔rfc14?4RQhvt«
moMlJnAll心4MH;Ml2.256bAoq
(■•・・■♦・・、・,,•■..、人A*A1■一
Totefc肉&M3,57?18
1,***,/*V«RM'][▼|QTY心m
RcjgOMc.l,[Abcob。、C&"ccIMcccb0nHpt$pctoOastxw]
5入ULuuinJaU2>:02;30口小5”“
1.内存视图MemoryViews
JProfilcr的内存视图部分可以提供动态的内存使用状况更新视图和显示
关于内存分配状况信息的视图。所有的视图都有几个聚集层并且能够显示现有存
在的对象和作为垃圾回收的对象。
•所有对象
显示类或在状况统计和尺码信息堆上所有对象的包。你可以标记当前
值并显示差异值。
•记录对象Recordobjects
显示类或所有己记录对象的包。你可以标记出当前值并且显示差异值。
•分配访问树Allocationcalltree
显示一棵请求树或者方法、类、包或对已选择类有带注释的分配信息
的J2EE组件。
•分配热点Allocationhotspots
显示一个列表,包括方法、类、包或分配已选类的J2EE组件。你可以
标注当前值并且显示差异值。对于每个热点都可以显示它的跟踪记录
树。
2.堆遍历Heapwalker
在JProfiler的堆遍历器(Heapwalker)中,你可以对堆的状况进行快照并
且可以通过选择步骤下寻找感兴趣的对象。堆遍历器有五个视图:
•类Classes
显示所有类和它们的实例。
•分配Allocations
为所有记录对象显示分配树和分配热点。
•引用References
为单个对象和“显示到垃圾回收根目录的路径”提供索引图的显示功
能。还能提供合并输入视图和输出视图的功能。
•Data
为单个对象显示实例和类数据。
•时间Time
显示一个对已记录对象的解决时间的柱状图。
3.CPU剖析CPUViews
JProfilcr提供不同的方法来记录访问树以优化性能和细节。线程或者线程
组以及线程状况可以被所有的视图选择。所有的视图都可以聚集到方法、类、包
或J2EE组件等不同层上。CPU视图部分包括:
•访问树Calltree
显示一个积累的自顶向下的树,树中包含所有在JVM中已记录的访问队
歹ij。JDBC,JMS和JNDI服务请求都被注释在请求树中。请求树可以根据
Servlet和JSP对URL的不同需要进行拆分。
•热点Hotspots
显示消耗时间最多的方法的列表。对每个热点都能够显示回溯树。该
热点可以按照方法请求,JDBC,JMS和JNDI服务请求以及按照URL请
求来进行计算。
•访问图Callgraph
显示一个从己选方法、类、包或J2EE组件开始的访问队列的图。
•访问栈Calltracer
显示所有记录的函数调用的时间序列。calltracer是根据线程、包
以及类来分组的,因此可以容易的找到感兴趣的指定区域。可以隐藏
线程、包类或者单个函数,以把大量的信息整理成容易分析事物。该
查看有利于分析涉及多个线程的用例,或者从调试器无法达到的角度
来详细地分析控制流。
4.线程剖析ThreadViews
对线程剖析,JProfiler提供以下视图:
•线程历史Threadhistory
显示一个与线程活动和线程状态在一起的活动时间表。
•线程监控Threadmonitor
显示一个列表,包括所有的活动线程以及它们目前的活动状况。
•死锁探测图表DeadlockDetection
显示一个包含了所有在JVM里的死锁图表。
•目前使用的监测器Currentmonitoruseage
显示目前使月的监测器并且包括它们的关联线程。
•历史检测记录Historyusagehistory
显示重大的等待事件和阻塞事件的历史记录。
•监测使用状态Monitorusagestatistics
显示分组监测,线程和监测类的统计监测数据。
5.VM自动勘测VMtelemetryViews
观察JVM的内部状态,JProfiler提供了不同的遥感勘测视图,如下所示:
•堆Heap
显示一个堆的使用状况和堆尺寸大小活动时间表。
•记录的对象Recordedobjects
显示一张关于活动对象与数组的图表的活动时间表。
•垃圾回收Garbagecollector
显示一张关于垃圾回收活动的活动时间表。
•类Classes
显示一个与已装载类的图表的活动时间表。
•线程Threads
显示一个与动态线程图表的活动时间表。
•可以分别查看heap,eden,survivors,code_cache,permanent内存
使用情况。并且对代码或者gc策略进行调板。
六实践(WEB内存溢出)
问题解决思路:
在正式环境服务器上,只增加weblogic启动参数-XX:+HeapDumpOnOutOfMemoryError
这样当服务出现00M异营时,会生成*.hprof内存快照文件,供分析使用。
在测试环境服务器上,增加dump参数,同时在本地进行远程动态监控。结合LoadRunner
进行压力测试。抓取不同时期远程服务器的内存快照。
分析快照文件,对比不同的快照文件。找到哪些类实例一直增长,或者结合代码,查找
某些实例特别多的,占用内存特别多的类。从而解决问题。
1,
b,按实例数量排序(检查实例不正常部分代码)
Ejftvft_pid25483.hprof-JProfilcr<.0
“"ionVievtrofilinc8!♦力nd”助Ip
喝国口♦,•二
Currentobjectset:3023730objectsin5993classes92018191arrays
is«l«ctionsttp,统Mshallxsix«
■・oryYievi
Clw».«[v]IV»...»I
C0unt▼
HeapY«lk»rj".String
电【】
■ZS.B
j«va3*1K&iMItpSEnlry■1A062
jm19CObj«t()■112,0198,311kB
CFVVs
j"。«tslArrayLi%t■M.6712.2:8kB
cc*ty4i«.ass.«<b.cotvton.voFrodkttrS4t■X.544
j"。】•><r<f•♦«kR・£3・、c・■56,88931/3
MU]I41.36SM
Thr«*dVi«vsj»v»vtilK4iht4ble$Ent>7IXJT9
javawillKaiMf«f4Ealry(]la.599SICZ
12^011
十■川—i・
■onatorVi»v»c<«V«<st*xb.biuldtmt.VliJtv<Typ«lfM«(]inn?
cc*staxbbuildti«tinterritlMBV«11M4XM«123.777
v&xk&K*^utilArK»&lfil«tDir«etoryNol)f>«rXttft12L4T0
jtv。lwr«fS«ftR«f<re)ce121,397
j"。vtilTr««V*ptEntryI2U311
BTtl«AetryVi««i
j«vaIMUCString)I1&400
j℃1»xrClzY116,661
ct*lyiie.“b.coMon.vo.hdli&f,Il<881
j«v«vtilLink4dK«sM«p$IntryI14.6^5政
v•¥1•<(€util*.coll<c<>o>>.CM)rcarr«»tX^tMlap$EQlryI14,137
«58kB
cc*V«*st<xbbuildtiA*:nten,b*lMsJ*vtTyp<K««eI13.2143)1kB
泗
j»vs】•>4r«fl«ct.lethodI13135kB
诔kB
jtvt—g*■♦lMdD”cr,piarI11.708kB
j»rwx»lM«ip«c«QNen*I11.2295«kB
j«v<1«MCl<ii[)19,551a3kB
l«ks
cc*ty4*<・s$・9bcgonv。Order♦9ff,rin4VDI8367
Z<:5lkM&》
•1»••>»••>»I1X"N.
.:CH””国*n。、&Bi“EObj«c1*
unlie*i»i«48”for♦vtlueon卜xxrw9dtyirstian.100:00IHSi12at
西列,-(533"3..芯OOl.Htf.•'A捌口都是一;..“3七H”「:,::.“五三Q.OGw1?】:①
c,另一个内存快照,按实例多少排序。
)ava_pidl2980.hprof-JProfiler<.0SAx
Scion
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 唐山市2024年河北唐山市审计局建设局旅游岛所属事业单位公开招聘工作人员22名笔试历年参考题库典型考点附带答案详解(3卷合一)
- 南昌市2024年江西广播电视台招聘工作人员28人笔试历年参考题库典型考点附带答案详解(3卷合一)
- 北京市2024北京农业农村部渔政保障中心第二批招聘应届毕业生3人笔试历年参考题库典型考点附带答案详解(3卷合一)
- 上海市2024上海工艺美术职业学院招聘1人笔试历年参考题库典型考点附带答案详解(3卷合一)
- 宁夏银行2026年度校园招聘备考题库及一套完整答案详解
- 中国人民银行清算总中心直属企业银清科技有限公司2026年度公开招聘备考题库及一套参考答案详解
- 2025年成都银行招聘总行专职信用审批人等岗位7人备考题库及1套完整答案详解
- 河北省建设用地土壤污染风险管控和修复名录移出清单
- 2025年监狱戒毒系统招聘475人备考题库及一套答案详解
- 护理研究知识产权保护
- 2024年合作约定:专业MG动画制作合同
- 病历书写基本规范课件
- 签电子合同范本
- 医用氧气瓶使用及注意事项课件
- 《误差理论与数据处理(第7版)》费业泰-习题答案
- NB-T 47013.1-2015 承压设备无损检测 第1部分-通用要求
- 园区草皮种植合同范本
- 陕西2023年西安银行招聘高层次人才考试参考题库含答案详解
- 标准鱼线线径对照表
- HGT-20519-2009-化工工艺设计施工图内容和深度统一规定
- 采购订单excel模版
评论
0/150
提交评论