问题背景:
一般程序系统发生异常,可能是由于多种原因引起的,例如:由于消息队列处理超时或文件系统上传超时等导致的问题;恰好日志log又没有做对应的打印输出,ELK
又未收集到对应的异常信息,无法清楚的知道程序具体的一个业务流程,对应的开发、测试环境又暂时无法使用或没有可供测试的数据。
解决方案:
可以通过线上监控工具,在不影响程序运行和业务使用的情况下,对程序功能代码进行方法级别的监控分析。通过监控观察程序的:类名、方法名、入参、出参等,来提供解决问题的排查思路。
watch命令的使用
watch [-b] [-e] [--exclude-class-pattern <value>] [-x <value>] [-f] [-h] [-n
<value>] [--listenerId <value>] [-E] [-M <value>] [-s] [-v] class-pattern met
hod-pattern [express] [condition-express]
复制代码
参数说明:
比如查看某个类的某个方法,同时查看请求参数与返回结果,示例如下:
watch com.offlineRepayment.server.controller.InvitationCodeCtrlImpl generateInvitationCode '{params[0],returnObj,throwExp}' -x 2
复制代码
页面请求接口之后,可以看到如下内容:
如果还行更进一步监控所调方法的参数,可继续直接监控方法里面的调用方法,比如:
watch com.offlineRepayment.platform.utils.JSONUtil readValue '{params,returnObj,throwExp}' -x 2
复制代码
参考
arthas其他应用:
- 查看cpu使用率;
- 热部署(进行编译录入,不需要重启应用);
- 反编译class文件;
- 动态跟踪Java代码;
- 实时监控JVM状态等如果有兴趣可在官网上查询
关注+点赞?收藏❤️不迷路
文章每周持续更新,可以微信搜索「 十分钟学编程 」第一时间阅读和催更,如果这个文章写得还不错,觉得有点东西的话
各位的支持和认可,就是我创作的最大动力,我们下篇文章见!
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END