连接代理时net8诊断到错误_工商银行基于Arthas打造在线诊断平台的探索与实践...

fd10b30a24edf40d87c176887bcf6e9e.png

作者 | 刘慕雨

在信息系统建设方面,工商银行一直积极探索,以开放的姿态借鉴行业先进经验,旨在为客户提供更优质的金融服务和用户体验。随着分布式架构和云计算平台在工行的广泛应用,如何高效排查程序错误或性能瓶颈,是个棘手的问题。

为此,我们基于 Arthas 建设了在线诊断平台,在保护客户信息安全的原则基础上,对相关能力做了剪裁和整合,通过 Web 方式支持更复杂的交互场景,在实际线上问题分析中发挥关键作用。

工行在线诊断平台:

ec48bf038524eff08b275ef6dc7ff460.png

下面对工行在线诊断平台的建设做个阶段性总结,分享一下我们的建设经验、实际效果以及未来展望,也希望能给社区提供一个参考。

598afdce84d48a38258fc717b9ae571c.gif

传统方式排查问题的痛点

对于后端工程师,一旦线上程序逻辑出错,问题排查如同破案,在分析研判时,问题现场的第一手信息是最珍贵的。开发人员很容易首先想到的就是阅读日志,从海量的日志中寻找蛛丝马迹,这就好比是对犯罪现场周边的视频监控录像逐一回看,非常辛苦。如果问题现场的日志记录缺失,就尝试在本地重现问题并调试解决,本地难以重现的,只能再加日志,再部署,再重现,然后再查日志,效率较低。对于复杂一些的比如程序性能问题,如何定位性能瓶颈,一不小心又要回到加日志、部署、查日志、再加日志的老路,不仅效率不高,也破坏了问题现场。

JDK 提供的工具如 jps、jmap、jstat、jstack、jconsole 等,可以为工程师提供一些帮助。Linux 操作系统的命令,如 top、free、pidstat、vmstat、iostat 等,也是排查问题尤其是性能调优必不可少的工具。但直接使用这些工具,对工程师的个人技术能力和经验要求较高。而且对企业来说,在生产环境直接通过命令行操作,是很敏感的行为。因此,如何在保证安全的基础上,又能像调试本地程序一样更便捷的排查分析,是个棘手的问题。

598afdce84d48a38258fc717b9ae571c.gif

Arthas 的解决方案

2018 年我们在参加一次 Dubbo Meetup 上,听了关于使用开源的 Arthas 工具排查 Dubbo 问题的分享。研究发现,Arthas 通过 JVM 的 Attach 机制,在不影响服务连续性的情况下,实时连接到目标进程,便于工程师在线排查问题。此外,Arthas 的字节码增强框架,可以通过 Instrumentation 技术动态修改字节码(需要 Java 虚拟机实现支持 retransformClasses),替换成新的 class,这就为在线调试提供了可能。

Arthas 原理图:

bdb6dd9a16f5026a746dc03e7e893af7.png

比如,使用 watch 命令,实时观测方法的调用情况;使用 jad 命令,把字节码反编辑成 java 代码;使用 redefine 命令,可以对代码做热更新,让开发人员告别不停“加日志、部署、查日志、再加日志”的套娃时代。在 Arthas 刚推出没多久,还提供了一个简单的 Web Console 功能,实际是一个以 Websocket 访问 Arthas 进程的方式,这也为我们后面建设在线诊断平台提供了思路。

598afdce84d48a38258fc717b9ae571c.gif

落地使用上的困难

直接使用 Arthas 的命令行交互方式,不能满足金融级运维要求,在落地使用上存在一些实际的问题:

  • 信息安全问题:Arthas 可以通过命令行方式,直接观测方法的入参、返回值,这就涉及到一些客户敏感信息,直接在生产环境使用命令行操作显然是不合适的。

  • 学习成本问题:工具的安装使用存在一定的学习成本,尤其是对于新员工来说。

  • 多人协作问题:当多个开发者对同一个目标进程进行诊断时,可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值