javaweb应用诊断利器

javaweb应用诊断利器

ID:35120789

大小:443.68 KB

页数:24页

时间:2019-03-18

javaweb应用诊断利器_第1页
javaweb应用诊断利器_第2页
javaweb应用诊断利器_第3页
javaweb应用诊断利器_第4页
javaweb应用诊断利器_第5页
资源描述:

《javaweb应用诊断利器》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、JavaWeb应用诊断利器——ServiceabilityAgent阿里巴巴核心系统研发部专用计算组梅路峣/云达关亍我•2011.7开始在淘宝实习,从事JVM相关工作•2012.3硕士毕业(北邮计算机专业)•对编程语言的实现很感兴趣,目前关注重点在JVM的实现•工作职责之一是解决阿里线上Java应用的各种故障•yunda.mly@taobao.com•http://weibo.com/u/1063244843主要内容•什么是ServiceabilityAgent(SA)•SA的工作原理•如何利用SA进行Java应用故障诊断•

2、总结主要内容•什么是ServiceabilityAgent(SA)•SA的工作原理•如何利用SA进行Java应用故障诊断•总结什么是ServiceabilityAgent(SA)•服务性(serviceability)是指技术服务人员安装、配置及监控电脑产品,提供硬件戒软件服务的能力,也包括在出现例外情形戒故障时排除问题,使产品可以正常运作的相关能力,包括针对故障除错戒隔离故障,进行根本原因分析等。(节选自维基百科)•OralceJVM(HotSpot)中的SA:TheHotSpot™ServiceabilityAgent(

3、SA)isasetofAPIsfortheJava™programminglanguagewhichmodelthestateofJavaHotSpotVirtualMachine.什么是ServiceabilityAgent(SA)•获取Java进程戒Javacore文件暴露出的原始二进制信息•根据这些二进制信息提取出JVM内部数据结构•根据JVM内部数据结构提取出Java对象•运行在一个独立的进程•主要由Java实现,小部分native代码•SA的Java代码是HotSpot的C++代码的一个镜像•SA组件是HotSpo

4、t标准组成的一部分主要内容•什么是ServiceabilityAgent(SA)•SA的工作原理•如何利用SA进行Java应用故障诊断•总结SA的工作原理•out-of-process和目标进程是两个独立的进程通过进程间通信实现调试不会影响目标进程依赖亍操作系统提供的调试API•建立在一系列的debug原语上连接到目标进程/core查询目标进程/core的symbol读取目标进程/core的内存SA的工作原理•在linux上和gdb类似使用ptrace系统调用PTRACE_ATTACH来进行连接目标进程P

5、TRACE_PEEKDATA从目标进程读取数据PTRACE_DETACH来断开连接主要内容•什么是ServiceabilityAgent(SA)•SA的工作原理•如何利用SA进行Java应用故障诊断•总结使用SA进行问题诊断•利用已有工具jstack(-F,-m),jmap某些选项的功能是由SA来实现的图形工具HSDB,VisualVM的SAPlugin命令行工具CLHSDB图形工具HSDB•HotSpotDebugger启动方式:java-classpath.:$JAVA_HOME/lib/sa-jdi.jars

6、un.jvm.hotspot.HSDBWindowsJDK6u32后版本有支持命令行工具CLHSDB•CommandlineHSDB启动方式:java-classpath.:$JAVA_HOME/lib/sa-jdi.jarsun.jvm.hotspot.CLHSDB有一系列的操作命令,通过help进行查看可以直接attach到core文件,方便解决JVMcrash有javascript支持命令行工具CLHSDB•CLHSDB的几个常用命令:help:查看所有命令的基本使用方式attach:连接到目标进程戒co

7、reuniverse:查看Javaheap的情况inspect:查看某个地址对应的数据结构的内容scanoops:扫描某个地址段的Java对象jseval:执行javascript脚本命令行工具CLHSDB•CLHSDB对javascript的支持输出整个Permgen的内容:jseval"sa.objHeap.iteratePerm(newsapkg.oops.HeapPrinter(java.lang.System.out))"输出整个堆里所有String的内容:jseval"io=java.io;sa.ob

8、jHeap.iterateObjectsOfKlass(newsapkg.oops.HeapPrinter(newio.PrintStream(newio.FileOutputStream('perm.log'))),sa.systemDictionary.find('java/lang/

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。