看完国外一个APM厂商最后的一个业务介绍视频,终于想通了PE领域中最顶层的应用目标,也就是如标题所云。那么这个影响效果是如何做到的?最终的步骤其实很简单,也就是利用大数据进行分析。而自己先前还没有想到利用可视化的数据建模去做这个分析,数据可视化的概念促成了我可以通过不同的角度、维度去了解、度量软件系统性能是如何影响终端用户体验,甚至是如何影响公司营收的。

显然,要完成上面的事情,数据采集是最重要的步骤。基本上所有的公司都会进行各种各样的数据采集,但是问题同样也来了,以何种方式采集数据、需要采集什么样的数据在这些公司都是缺乏指引的,很多最终做成了四不像、既不是EUM或者RUM、也不是APM或者BSM。

采集数据的方式基本上分两种:静态插桩和动态插桩。静态插桩的优点是精确,可以在你需要的任何代码片段中插入。但是缺点也显而易见,对代码侵入性非常强,任何新开发的功能特性如需采集都需要重新加入桩,有时候盲目插入的桩可能随着业务变动而需要变更或者需要移除,以至于测试人员甚至需要对这些插桩本身进行测试。动态插桩的优缺点基本跟静态插桩是互补的,但当作为动态插桩的插件开发的比较全面合理时,基本是能够满足精确度要求。只是相应的成本也要高,所以一般中小型公司都会为了所谓的速度而采取简单的静态插桩方式。

接下来,对于需要采集什么样的数据更是五花白门,估计大部分公司都是由决策层和业务部门直接决定,基本不会和其他部门进行沟通。但业务部门一般仅仅采集跟业务相关的指标,关心业务的达成率、金额等等,对于客户端的延迟、请求的稳定性以及服务端的TPS、应用和系统资源漠不关心。

这些缺乏指引的策略就像化功散一样无形中对公司造成了非常大的伤害。

案例1,业务部门得到报警:某段时间注册用户数量骤降,以此来驱动技术部门来排查此问题,然后果然发现是注册服务出了问题。到这里,你可能还在想这样看上还挺不错,可以通过监控报警来了解线上状况。可是其实从注册服务真正出现问题到通过业务报警这中间是隔了一段不短的时间,有时候可能长达一个星期,相比我后面要说的,这种预警实在太后置了。

案例2,线上应用到数据库的连接泄露,导致数据库连接池爆满,此时部分用户在终端进行的业务操作会失败或超时,导致服务不可用的假象,一段时间后自然恢复,但是此问题周而复始,导致用户使用信心下降,活跃用户变为非活跃用户,甚至流失。此种情况业务方面采集到的数据根本反应不出来,统计和预警是失效的。

上面的两个案例告诉我们,光有业务指标采集是远远不够的,还有性能、可用性、可靠性、稳定性等多方面的数据需要收集,即使是业务本身,也需要进行更精细化的分解、比如支付,在业务中关心笔数、金额、成功率等,在APM中是作为一个transaction,如为了完成支付可能会调用到多个服务或者API,那么每一个环节的调用我们可以定义为一个event,同时在数据采集的时候会进行端到端、全链路的采集。

下面,通过一个APM厂商成熟的产品来展示下假如上面我们都做到了这些数据可以用来做什么。

不同请求的延迟:

延迟分析:

Http error的统计:

crash统计:

以上都是EUM方面的东西,接下来看看在APM收集到的数据都可以做到些什么。

做微服务的同学会发现,这里基本包含了Hystrix dashboard的所有东西,当然也更强大,可以从APM通过跟踪服务构建的拓扑图上更直观的看到性能数据,包括响应时间、调用速率、可靠性等。

单个transaction分析:

如果说上面的数据解决了实际的问题,那么接下来的可视化数据分析展示了这些数据更深层次的应用。

通过拟合不同的数据来了解性能跟营收之间的关系。

总结,我这里并不是推销APM产品,实际上总是先有这样的需求和思想,然后才有产品,所以只有理解软件性能工程的真正目的,并且思考如何解决现实业务问题,不断move forward,才可能达到最后通过数据分析规避或降低损失的目的。

How the performance impacts your revenue-性能影响营收的更多相关文章

  1. Performance Monitor1:开始性能监控

    Performance Monitor是Windows内置的一个可视化监控工具,能够在OS级别上实时记录系统资源的使用情况,通过收集和存储日志数据,在SQL Server发生异常时,能够还原系统当时的 ...

  2. .net core 抛异常对性能影响的求证之路

    一.前言 在.net 社区中曾经听到过很多关于大量抛异常会影响性能这样的结论,心中一直就存在各种疑问.项目中使用自定义异常来处理业务很爽,但是又担心大量抛业务异常存在性能问题. 查阅了各种文档,微软官 ...

  3. 考查SQLite 3索引对整数排序的性能影响

    做个实验,想了解SQLite3索引对整数排序的性能影响. 用这个测试表,考查绿色那列: id name date 自增型主键 字符串型,随机生成 整数型 随机生成,范围0到54354354 1 bMz ...

  4. Salesforce select字段的多少对性能影响巨大

    Salesforce select字段的多少对性能影响巨大,第1个是select 144个字段,第2个是select 5个字段, 性能相差了7倍 "select Id,IsDeleted,M ...

  5. mysql中in和exists二者的区别和性能影响

    mysql查询语句in和exists二者的区别和性能影响 还记得一次面试中被人问到in 和 exists的区别,当然只是草草做答,现在来做下分析. mysql中的in语句是把外表和内表作hash 连接 ...

  6. numa对MySQL多实例性能影响

     numa对MySQL多实例性能影响,通过对numa将MySQL绑定在不同的CPU节点上,并且采用绑定的内存分配策略,强制在本节点内分配内存.具体测试如下:1.关闭numa(numa= interle ...

  7. ToList<>()所带来的性能影响

    ToList<>()所带来的性能影响  前几天优化师弟写的代码,有一个地方给我留下很深刻的印象,就是我发现他总是将PLINQ的结果ToList<>(),然后再返回给主程序,对于 ...

  8. C#异常性能影响

    何谓异常 很多人在讨论异常的时候很模糊,仿佛所谓异常就是try{}catch{},异常就是Exception,非常的片面,所以导致异常影响性能,XXXX……等很多奇怪的言论,所以在此我意在对异常正名. ...

  9. 老李分享:《Java Performance》笔记1——性能分析基础 1

    老李分享:<Java Performance>笔记1——性能分析基础   1.性能分析两种方法: (1).自顶向下: 应用开发人员通过着眼于软件栈顶层的应用,从上往下寻找性能优化的机会. ...

随机推荐

  1. js操作创建和操作外部样式的例子

    兼容IE8及以上的IE浏览器1. [代码][HTML]代码 <!DOCTYPE html><html lang="en">    <head>  ...

  2. Intel® Media SDK Media Samples Linux 学习笔记(转)

    最近折腾intel media sdk,主要硬件平台是在HD4600的核显上进行测试,intel media sdk是intel提供的一种基于核显的硬件编解码的解决方案,之前已经有使用ffmpeg进行 ...

  3. 西交校赛 F. GZP and Poker

    F. GZP and Poker GZP often plays games with his friends.Today they went to a board game.There are n ...

  4. 管理 Word 博客账户

    1.1 多个博客账户 笔者的电脑上,Word 2013 有多个博客账户,如下图所示: 图1.1 多个博客账户 这些账户的名称在 Word 里是自动生成的,无法更改.账户一多就无法与相应的网站一一对应, ...

  5. Ubuntu bitnami gitlab 安装

    /************************************************************************************** * Ubuntu bit ...

  6. Android 应用程序窗体显示状态操作(requestWindowFeature()的应用)(转载)

    转自:http://www.cnblogs.com/salam/archive/2010/11/30/1892143.html 我们在开发程序是经常会需要软件全屏显示.自定义标题(使用按钮等控件)和其 ...

  7. AndroidManifest.xml文件详解(uses-feature) (转载)

    转自:http://blog.csdn.net/think_soft/article/details/7596796 语法(SYNTAX): <uses-featureandroid:name= ...

  8. mq4参考

    更新: 2017/05/24 其实也就是照搬文档,主要是用到一个记一个.方便掌握 ----------------------------------------------------------- ...

  9. hdoj1495简单BFS

    #include <stdio.h> #include <string.h> #include <math.h> #include <algorithm> ...

  10. 收集一些Unity插件

    MCS Male 系列,人形角色插件,表情+体型 Mecanim Control Mecanim Control is a coding tool made that allow for a wide ...