随着互联网的高速发展,产品迭代频繁,导致我们的工作节奏变得也越来越快,而如何高效的处理问题变得尤为重要。当然,对于互联网公司的开发者或者运维人员来说,如果自己的网站突然出了问题的话,那么快速定位故障问题,并由相关负责人立即着手解决,让网站在短时间内恢复正常,这点对于互联网公司的发展而言更是重中之重。
那么问题来了!当网站发生故障时,如何快速定位出是运维人员的问题,还是研发同学的过失呢?一般情况下,我们在处理故障的过程中,首先就是看日志,在日志中发现故障是什么原因所导致的,不过,在具体的实践中,这样的工作效率显然很慢,而且也不能很准确的定位出是开发者的问题还是运维人员的问题。通过专业的应用性能管理工具解决这个问题,就显的尤为重要。
OneAPM 的 Application Insight 是一款帮助开发者或者运维定位问题故障原因的必备利器,它可以从事件和 JVMs 两个角度帮助使用者分析网站发生故障时的详细情况。
事件
首先,我们在 OneAPM 总览页面中有个错误率的图表,如下图:
从上面图表中可以看出 Application 运行过程中,在 14:00 到 15:00 之间发生错误,并且在 15:00 之后又发生了错误。那么问题来了,错误的原因到底是什么?通过点
击左侧事件标签下面的错误信息子标签,就可以查看详细信息,如下图:
首先,我们会看到错误发生的时间点,接着下面还提供发生错误的 Trace,也就是跟踪到的发生错误的请求地址,通过点击请求地址链接,我们可以跟踪错误详情,如下图:
从图中,我们可以看到发生错误的详细 URL, 发生的时间,发生的次数,同类型错误出现的次数。通过这几个指标数据,可以分析出错误出现的频率,接下来,我们就可以通过查看提供的详细堆栈信息,来分析错误的具体原因了,如下图:
通过图中提供的跟踪详细,可以看到是字符串转换异常的错误,发生代码行是 UserServiceImpl:94 这个类中的 94 行代码报错,帮助使用者定位到出现错误的具体的代码行,这样解决问题就很简单了。
上图只是其中一种错误情况,我们接下来看错误列表中的其他错误,如下图:
通过点击发生错误的请求地址,跟踪错误详细,如下图:
通过上图,同样可以看到发生错误的详细 URL, 发生的时间,发生的次数,同类型错误出现的次数,及错误信息,从错误信息可以看出是 Redis 拒绝连接的错误,接着分析堆栈信息,如下图:
从图中可以看出是 ApplicationInstanceServiceImpl.java:66 这个类中的 66 行代码出了问题,接着去对应代码分析,最终定位出是 Redis 数据库的问题。
JVMs
JVMs 从内存,线程来分析 Application 的运行情况:
内存
如上图,OneAPM 会从:
-------------------------
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。