Arthas线上应用诊断利器概述.pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 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文档

文档评论(0)

智慧IT + 关注
实名认证
内容提供者

微软售前技术专家持证人

生命在于奋斗,技术在于分享!

领域认证该用户于2023年09月10日上传了微软售前技术专家

1亿VIP精品文档

相关文档