开发者社区> 问答> 正文

「运维」和「研发」,谁是故障的始作俑者?

        随着互联网的高速发展,产品迭代频繁,导致我们的工作节奏变得也越来越快,而如何高效的处理问题变得尤为重要。当然,对于互联网公司的开发者或者运维人员来说,如果自己的网站突然出了问题的话,那么快速定位故障问题,并由相关负责人立即着手解决,让网站在短时间内恢复正常,这点对于互联网公司的发展而言更是重中之重。
         那么问题来了!当网站发生故障时,如何快速定位出是运维人员的问题,还是研发同学的过失呢?一般情况下,我们在处理故障的过程中,首先就是看日志,在日志中发现故障是什么原因所导致的,不过,在具体的实践中,这样的工作效率显然很慢,而且也不能很准确的定位出是开发者的问题还是运维人员的问题。通过专业的应用性能管理工具解决这个问题,就显的尤为重要。
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 会从:

  1. Heap Memory Usage
  2. PS Gen
  3. Garbage Collection
  4. Class Count
这个四个角度来分析内存的使用情况和 GC 的回收时间及次数。
如果 Heap Memory Usage 和 PS Old Gen 的内存使用率比较多,我们可以选择扩大堆内存或者多个 JVM 堆内存独立采用负载均衡来解决。
线程
                        

线程图展示了线程数量的动态变化,以及线程池中不同状态的线程分布。就可以很直观的分析出 Application 的并发线程的情况。


综合分析,从事件的错误情况和 JVMs 视图两个方面分析 Application 在运行期间发生故障,我们可以使用OneAPM 的 Application Insight 来定位问题,准确高效率,更重要的是,可以帮助管理者分析出问题出现在运维还是开发者的身上,进而快速找到相关的负责人,实现高效率的解决问题。


如果开发者的网站发生故障,因无法快速定位原因而耽误很久的话,那么真的需要一款好的监控产品来帮助我们提高工作效率了。可以注册一个 OneAPM 账号,下载安装一个 Application Insight 来感受一下,相信一定会给我们的工作带来惊喜和收获。










展开
收起
sunny夏筱 2015-10-26 10:30:56 6956 0
7 条回答
写回答
取消 提交回答
  • Re「运维」和「研发」,谁是故障的始作俑者?
    这个东西很好,对我们运维很有用
    2015-10-27 15:40:35
    赞同 展开评论 打赏
  • Re「运维」和「研发」,谁是故障的始作俑者?
    just coo   ,莫名觉得图表很好玩
    2015-10-27 15:00:47
    赞同 展开评论 打赏
  • Re「运维」和「研发」,谁是故障的始作俑者?
    OneAPM 的 Application Insight 来定位问题,准确高效率,更重要的是,可以帮助管理者分析出问题出现在运维还是开发者的身上,进而快速找到相关的负责人,实现高效率的解决问题
    2015-10-27 14:39:55
    赞同 展开评论 打赏
  • Re「运维」和「研发」,谁是故障的始作俑者?
    研发都是大爷,访问慢反正就是我们运维的错呗
    2015-10-27 14:37:40
    赞同 展开评论 打赏
  • Re「运维」和「研发」,谁是故障的始作俑者?
    不明觉厉,赞。
    2015-10-27 14:34:05
    赞同 展开评论 打赏
  • apm
    Re「运维」和「研发」,谁是故障的始作俑者?
    2015-10-27 14:10:12
    赞同 展开评论 打赏
  • 确实是个不错的工具,这个是软件么?还是说阿里的服务?

    如果是软件,需要公司的引入,不过这种额外的引入恐怕没有那么容易,

    首先遇到问题开发人员看日志也能看到问题只是没有这么直观,

    其次服务器相关运维也会设置报警。

    另外新东西总是要投入成本的,包括时间和金钱,

    -------------------------

    回 8楼(sunny夏筱) 的帖子
    听着是高大上的啊哈哈
    2015-10-26 10:58:28
    赞同 展开评论 打赏
滑动查看更多
问答排行榜
最热
最新

相关电子书

更多
企业运维之云原生和Kubernetes 实战 立即下载
可视化架构运维实践 立即下载
2021云上架构与运维峰会演讲合集 立即下载