- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Arthas线上应用诊断利器概述
技术创新,变革未来
Arthas/阿尔萨斯
• Alibaba开源的Java诊断工具
• 2018-09开源,Star 19.7K
• Github: /alibaba/arthas
• Wiki: https://alibaba.github.io/arthas/
• 国内镜像Wiki: https://arthas.gitee.io/
• Arthas开源交流QQ群:916328269
• Arthas开源交流钉钉群
一个简单的mybatis demo
• 运行时,怎么查看 selectByCityId 具体执行的sql是怎样的?
• /hengyunabc/arthas-mybatis-demo
Arthas快速开始
$ curl -O https://alibaba.github.io/arthas/arthas-boot.jar
$ java -jar arthas-boot.jar
$ curl -O https://arthas.gitee.io/arthas-boot.jar
$ java -jar arthas-boot.jar
动态查看mybatis具体执行的sql
• mybatis本身的logger可以打印出sql
• 使用arthas查看应用的logger配置
• 从appenders可以看到logger的打印到哪里
动态查看mybatis具体执行的sql
• 查找出mybatis mapper的logger
动态查看mybatis具体执行的sql
• 更新mybatis mapper的logger level
mybatis具体在哪里打印出日志的?
• 已经知道修改mybatis的 logger level可以打印出sql,但具体是在
mybatis的哪个类里?
• Logger最终打印时,会用StringBuilder拼接出结果
• redefine动态更新StringBuilder类的代码
• 在StringBuilder#toString() 函数里打印出调用栈
mybatis具体在哪里打印出日志的?
• 复制一份JDK里的StringBuilder代码到工程里
• redefine动态更新StringBuilder类的代码
mybatis具体在哪里打印出日志的?
• org.apache.ibatis.logging.jdbc.ConnectionLogger
Mybatis数据库查询消耗了多少时间?
• 使用watch命令查看mapper执行时间和返回结果
Mybatis数据库查询消耗了多少时间?
• 返回结果可以组合 params, target, returnObj, method, clazz等
• 条件表达式可以灵活判断,比如超过3ms
• watch –h
• 用tab可以灵活补全
Mybatis的mapper是怎样实现的?
• mapper只是一个接口,没有具体的实现类
• 使用trace跟踪一个函数里的子调用
• 默认情况下会跳过jdk 的函数,加上--skipJDKMethod false
Mybatis的mapper是怎样实现的?
• mapper只是一个接口,没有具体的实现类
• 使用sc命令查找动态代理的实现
• 用jad 反编译代码jad xy.$Proxy49
Mybatis的mapper是怎样实现的?
• xy.$Proxy49 内部用InvocationHandler反射调用
• 用watch打印出h的具体类名
org.apache.ibatis.binding.MapperProxy
Mybatis的mapper是怎样实现的?
• 用trace层层深入
能重放调用不?
• demo里是一个定时任务调用查询,但如果抓到一个慢调用,可以
重放来排查不?
• 用tt(timetunnel)记录慢调用
• 用 –i 参数查看调用详情,-p 参数重放
生成热点火焰图
• 前面我们假设已知mybatis查询慢,如果未知代码怎样定位?
• 用profiler生成火焰图
在浏览器中查看火焰图
• http://localhost:3658/
生成内存分配火焰图
• profiler start --event alloc
Tips
• Arthas并不止是一个诊断工具,它是各种利器的集合,灵活组合可以抽丝剥茧,深入应用
内部。了解得越多,越容易解决问题。
• Gitee文档
您可能关注的文档
最近下载
- 年產6万吨环氧树脂工艺设计稿毕业设计稿.docx VIP
- 工业机器人工作站系统集成设计 电气电路设计 电气电路设计.pptx VIP
- 人工气道湿化的护理进展1).pdf VIP
- 最全剪映教程.pdf VIP
- 4亨通组织架构职责分工汇编.pdf VIP
- GMP 项目四:药品生产过程管理 项目四:药品生产过程管理.ppt
- 会计全套表格.xls VIP
- NB-T+10160-2019+炭化型煤NB-T+10160-2019+炭化型煤.docx VIP
- Chapter 12: 存在主义 与 文学Existentialism & Literature.ppt VIP
- 防性侵主题班会教案-防性侵主题班会教案小学生(共7页).docx VIP
原创力文档


文档评论(0)