透视宝Java代码性能监控实现原理_第1页
透视宝Java代码性能监控实现原理_第2页
透视宝Java代码性能监控实现原理_第3页
透视宝Java代码性能监控实现原理_第4页
透视宝Java代码性能监控实现原理_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

透视宝Java代码性能监控实现原理―、Java平台体系及应用场景从1995年SunMicrosystems公司正式推出Java,到2006年时Sun公司将其开源,迄今为止已经有了20年的历史。Java本身已不仅仅只是一门面向对象的编程语言,而是由一系列计算机软件和规范形成的技术体系这个技术体系提供了完整的跨平台开发与部署的支持,实现"一次编写、到处运行"的目的。Java已经广泛的应用于嵌入式、移动终端、企业服务器、大型机等各种场合。Sun官方所定义的Java技术体系包括如下几个组成部分:Java程序设计语言*各种硬件平台上的Java虚拟机Class文件格式*来自商业机构和开源社区的第三方Java类库IntenrationLibrariesOtherRafeLibrarieslanciandutilBo昶LibrariesJamvirtuniHciuni馆JavaLanguagejavajavacjavadocjarjavapJPDAJConsoleJavaVisualVMJMCJFRJavaDBInt'lJVMTlIDLDeploySecurityTrouble3hootScriptingWebSeirvicBSRMIIJavaWebStartApplet7JavaPluig-inJavaLanaua:IntenrationLibrariesOtherRafeLibrarieslanciandutilBo昶LibrariesJamvirtuniHciuni馆JavaLanguagejavajavacjavadocjarjavapJPDAJConsoleJavaVisualVMJMCJFRJavaDBInt'lJVMTlIDLDeploySecurityTrouble3hootScriptingWebSeirvicBSRMIIJavaWebStartApplet7JavaPluig-inJavaLanaua:i乜Tools&loolAPIsSwingJavii2DAWTAccessibilrtyDragandDropInputMethodsImageI/OPrintServiceSoundUserInterfaceToolkits■JavaFXScriptingB«ansiiirisupportIllpUt/OUlplltJMXJDBCJNDIRMI-IOPIDLJNIMathNetworkEngoverrideMechanismsecurityserializationExtensionMechanismXMLJAXPJavaSE

APIlangandutilCollectionsConcurrencyUtilitiesJARLoggingReflectionManagementPreferencesAPIRefObjectsRegularExpressionsversioningJavaHotSp&tVM图:Java技术体系组件图JavaVirtualMachine(JVM)是Java体系的基础,负责解释、编译执行.class文件形式的字节码,同时负责内存管理、热点代码检测和运行时编译优化。正是由于有了虚拟机的基础,才使Java实现了"一次编写、到处运行”Java这20年的发展,其实更是虚拟机的发展过程。期间经历了Sun、BEA公司各自开发的虚拟机,2009年之后,ORACLE将这两家公司收购,并将这些虚拟机取长补短、合二为一。目前还是开源的虚拟机OpenJDK,可供爱好者学习研究用。JRE部分是支持Java程序运行的标准环境。JDK是JRE的超集,包含JRE的一切,再加上工具如编译器、调试器等。二、Java性能监控需求对于一个企业的应用系统,大多数情况下,肯定是由多种编程语言开发的各种系统的集成。我们都非常关心系统的可用性、及时响应性、资源的消耗,比如CPU、内存、各种I/O、网路带宽等消耗情况。对于这些问题的性能瓶颈点,我们一般可以归纳为外部服务(如第三方API)、资源读写、代码异常如果在发生这些问题时,能够及时完整的抓拍记录保留下来,那么对于我们解决问题将会提供充足的证据,解决问题会变的非常容易。对于Java应用系统来说,JVM自身提供了相应的性能监控手段和工具,经常在出现问题后,比如内存泄漏或溢出时,我们会通过jmap命令导出堆的转储快照,利用相应的命令jhat或其他相应的第三方内存分析工具来分析对象的占用情况。响应缓慢时,我们可能会用jstat监视命令、或jdk的可视化工具jconsole、visualvm来分析JVM的垃圾回收类型、回收频率,来推测是否是垃圾回收导致的。有可能我们还要接着分析线程转储快照,通过jstack取出线程的栈快照,来分析是否有真死锁、死循环导致的相应缓慢、资源负载高等情况。

当有问题出现时,许多开发人员可能都是比较盲目的用这些工具来试探性定位问题,而大多数情况下,这种试探会无功而返。因为这些分析工具主要是侧重Java单方面的分析,比如该系统调用第三方API,如果第三方API有问题,是无法监控到的。还有像文件、DB资源的访问也是是无法监控到的。而且,只有对Java虚拟机机制较为熟悉的高级开发人员才能比较好的运用、理解这些工具,对于大多数普通Java开发人员来说,这些问题只会令他们束手无策。像外部服务(如第三方API)、资源读写、代码异常这些瓶颈点,需要通过代码级别的监控才能直接、快速、有效的找到症结所在。调用第三方API的耗时、资源访问的耗时、代码抛出的非预知异常,这些常见问题代码监控完全能够监控到,并能够实时抓拍记录,一旦有问题可以快速还原事故问题现场。通过代码级别监控发现问题后,也可以在辅助利用虚拟机内置监控工具进行进一步的定位。三、透视宝Java监控实现原理SourceprcgnmtermcdL(tcIn^utVirtualmackins•OutpnlSourceprcgnmtermcdL(tcIn^utVirtualmackins•Outpnl图:Java的执行模型在Java的执行体系中,由.Java源码文件编译后的.class字节码文件,可以理解为中间语言。

图:透视宝Java监控实现原理图:透视宝Java监控实例运行图1字节码load至JVM时发生了什么*回调函数注册完毕后,凡是当有任何的class文件即将被类加载器加载前,都会执行回调函数transform,在此方法内实现的类改变操作。*实现的transform方法中,我们使用的是ASM字节码操作框架,ASM从二进制形式的类文件中读取、分析类的信息,然后修改改变类的行为。*transform方法的基本代码形式如下:

i~F(found■sizeQ>fl||tracerMatch){ClassReadercr=newClas&Reader(cbf);Clas&Writercw二newClassWriter(crycbf[7]>(byte)0x32?ClassWriter.COMPtffE^FMMES;&)j,Clas&Vlsitorscv=createVlsltopfclJSsLoader^ found,trace^lEnalne^cw);cruacc@pt(&cVj.0);buf=cw.toByteArray();returnbjf;2、如何实际改变类行为*在依赖于ASM基础之上,我们抽象出这样的业务模型拦截定义配置引擎(InterceptEngine)拦截定文上下文拦截定义描述(InterceptDefinjtionJ拦截探笔拦截定义过滤器运行时拦截处理器Pi拦截探笔拦截定义过滤器运行时拦截处理器Pi*常用的拦截探针*常用的运行时拦截处理器字符串格式化处理器字符串匹配处理器本地线程处理器开启方法栈追踪处理器方法栈追踪自定义属性处理器用户自定义业务处理器匚比如绘制应用拓扑处理器*支持的拦截定义过滤器规则类注解方式类注解注解正则+方法名正则方式过滤器规则类名方式字符串格式化处理器字符串匹配处理器本地线程处理器开启方法栈追踪处理器方法栈追踪自定义属性处理器用户自定义业务处理器匚比如绘制应用拓扑处理器*支持的拦截定义过滤器规则类注解方式类注解注解正则+方法名正则方式过滤器规则类名方式接口名方式类名正则+方法注解方式 —类注解+方法注解方式接口名正则+方法名正则方式—访问修饰符+类名正则+方法名正则十返回值十方法参数方式—类名正则+方法名正则方式*该业务模型对应的行为定义拦截描述时,指定过滤拦截哪些类、哪些方法,然后,在这些行为的点上,可以埋入探针、处理器。重写visitCode、visitInsn、visitMaxs分别实现方法进入、返回、异常的相关操作改写。四、透视宝Java监控部署流程1登录云智慧透视宝官网:点击页面右上角导航的"免费试用",正确填写免费试用的申请信息后会弹出下面的对话框,同时激活邮件会自动发送到你的邮箱中,按照流程注册帐

号即可。恭喜您.注册成功!在[鉀之巴会有激活邱曲发送到怒^邮甫.请怒:主言童收齐按笛辑中慝敲t理。2、注册成功后,登录透视宝,点击配置-应用,在配置页面中下载安装SmartAgent。安装成功后,SmartAgent会根据系统配置自动获取主机信息,大致两分钟后,您就可以在“主机-服务器"模块中查看该服务器的CPU、内存、网卡、磁盘及进程等性能数据。Uimi丰斗3如果要监控应用运行时代码、主机中服务和数据库性能数据,您需要进一步安装和配置SmartAgent提供的各种插件,这是因为SmartAgent实现了一种开放式的插件式结构,对每个运行时代码、服务和数据库的监控都是通过相应的插件来实现的。

c3i>iBi®至S4UKinW31I3.2J.210.4.1-107(0---»nilmPF14.4-221?3CL4.2J17lD.0.3.67(dodctrceriDDS).toajjs?14.QUL44LOU-bHio.4,1.19'73O.4.UW3itiiiEiEZ^T nsaflewivi.de90*013tLM、6QNm-u&jIjuIIHiic3i>iBi®至S4UKinW31I3.2J.210.4.1-107(0---»nilmPF14.4-221?3CL4.2J17lD.0.3.67(dodctrceriDDS).toajjs?14.QUL44LOU-bHio.4,1.19'73O.4.UW3itiiiEiEZ^T nsaflewivi.de90*013tLM、6QNm-u&jIjuIIHiiA^ipkdilcn.正匪罰DilCOTETTljQlS§的dIW奇!wQ.50F=HF鼻财4-1.1.N^niMR呦心pp“lL.】SmartAgent在安装完成后,加载过程中自动发现你的应用组件,如果没有自动监测到Java环境,也可以手动添加JavaAgent。如上图所示,点击“管理”入口,进入"插件管理”,点击页面下部的"添加服务",选择JavaAgent后,点击"创建”。创建完毕后,点击“ON”。(该ON操作只是初始化用户的信息,以便以后采集到的信息能够正确的回传给该用户。)|[HUMiMi.awM.09LC!muzi?AJJJL7

itikijsl#Al.f7JEXUj!J14dLLLl垃冲

»4ili2L10*.3-993■耳dh1MniifU1>3一W任曰3汙C*mw-L4?占一lutiiMndbDrY-rflsi^■止4■炖fiT;・LR12•5ThtuLU 葩krKb卜TQH氓即翊即口■止S>£fl7TWSr>!ij»,t -a=a-3trJW3«-»*«.以上都操作完后,在{smartagent的安装路径}/plugins,就会看到如下形式的ID|t/tlaAii/KKrLjKiNn'^.qipmi■Mt:fahl宫盘IL.E昨叫:柬菽血ssitm丈妙费也i.nmpni1」SHMffriMr.!?JMI5AH'i.Eiiir^jci£*jxcwcr碍3dL5?a?f生jygni」•二mstsHioazm:ljna®WEnr..jmlsM:在到{smartagent的安装路径}/plugins/JavaAgent_1442476463X1002x0/conf文件夹下,查看app.conf文件,看看该文件内的HostKey的值是否是如下类似的加密形式Lubicajinwr巧風■work■'IE克匸丹?订m:fi真[#応询4:1:壬in?畫□打HU:TC:牡匚0;圧时11蛊M口远朮-tYFG8;九」&5丁」•厂匚戸丘;皿卞匹*礼/代色匸卧OxXrS■花张匚託玄■lAUEfth口HOME!!Rrp9BnE5T=xyp=^ttp:A/VLO-2.2.U:2473护r^BlxfiBr":p]DUjcCF』为屮:ppP•"=:!■n血砂:■■:ExtJ■incluSt■="t.a-xjkxxHjaJ".■aita_iEBffl.e»wrLfrBin"f"paxerri "spcaenze"i"ZO0G<"j・耐1"1葩■i"2Q?B, i'hi■■至u町■』rtias"i"is'〕■pzcinfi5e"i"is-'(■<,3wnns&l"i"LBi-prot™!"i“闻*・丸.・』・ILJuricWrei"25?S9B.•让rexTi"lB.abatox"-i"rw叫

以上情况,表明JavaAgent已经下载启动初始化成功。4、 安装JavaAgent至各种应用服务器上,如tomcat\jboss\weblogic。(该操作参考官网/即可)5、 只要启动相应服务器,然后访问您的应用url即可,该url对用的代码执行情况即可呈现给您,一旦出现缓慢问题也一目了然。如下图示意■s■s722g.llrmUALlOZLLLS4:i7155/n722g.llrmUALlOZLLLS4:i7155/nBdH./76..iipjE-^15-£I7D2lb:04吐.:弟柿E.)Dr^sa[Mdni!/c*:dlinaj,carB.*s^tBridardEni^irwV^VB.RnH^kB{l'Lar^ltHp>£h*/^nLdir^>lCEiririactar/R«iqu!»v1^Larg/iap«cK«^lcak«Enii.fccnrH<kar/Ft«aparwv.-j,^e>7iM.liQ1o炮曲讯丄Z/fh1阳话聪b/m牡心讦曲由&就W斗agef■脸H咖5«创ch、翠曲曲QC0Q3>1口rg!>"■pivH«庄hirafw* tW■b£r・rurit¥Multi*弓《r”i・H韭|1庁ion材也dr10Z*pCfaoi1jE0rT^^ipKcmafcO'rH|,auppcr1,/Farw£nt4^Hp4DrpfiHMancl«<|LjMi'Mi^iilidri*krt,!hti3i-l'*Htftp£FBraiBtR4qu«ii't;L3A¥ax.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论