How the performance impacts your revenue-性能影响营收
看完国外一个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-性能影响营收的更多相关文章
- Performance Monitor1:开始性能监控
		Performance Monitor是Windows内置的一个可视化监控工具,能够在OS级别上实时记录系统资源的使用情况,通过收集和存储日志数据,在SQL Server发生异常时,能够还原系统当时的 ... 
- .net core 抛异常对性能影响的求证之路
		一.前言 在.net 社区中曾经听到过很多关于大量抛异常会影响性能这样的结论,心中一直就存在各种疑问.项目中使用自定义异常来处理业务很爽,但是又担心大量抛业务异常存在性能问题. 查阅了各种文档,微软官 ... 
- 考查SQLite 3索引对整数排序的性能影响
		做个实验,想了解SQLite3索引对整数排序的性能影响. 用这个测试表,考查绿色那列: id name date 自增型主键 字符串型,随机生成 整数型 随机生成,范围0到54354354 1 bMz ... 
- Salesforce select字段的多少对性能影响巨大
		Salesforce select字段的多少对性能影响巨大,第1个是select 144个字段,第2个是select 5个字段, 性能相差了7倍 "select Id,IsDeleted,M ... 
- mysql中in和exists二者的区别和性能影响
		mysql查询语句in和exists二者的区别和性能影响 还记得一次面试中被人问到in 和 exists的区别,当然只是草草做答,现在来做下分析. mysql中的in语句是把外表和内表作hash 连接 ... 
- numa对MySQL多实例性能影响
		numa对MySQL多实例性能影响,通过对numa将MySQL绑定在不同的CPU节点上,并且采用绑定的内存分配策略,强制在本节点内分配内存.具体测试如下:1.关闭numa(numa= interle ... 
- ToList<>()所带来的性能影响
		ToList<>()所带来的性能影响 前几天优化师弟写的代码,有一个地方给我留下很深刻的印象,就是我发现他总是将PLINQ的结果ToList<>(),然后再返回给主程序,对于 ... 
- C#异常性能影响
		何谓异常 很多人在讨论异常的时候很模糊,仿佛所谓异常就是try{}catch{},异常就是Exception,非常的片面,所以导致异常影响性能,XXXX……等很多奇怪的言论,所以在此我意在对异常正名. ... 
- 老李分享:《Java Performance》笔记1——性能分析基础 1
		老李分享:<Java Performance>笔记1——性能分析基础 1.性能分析两种方法: (1).自顶向下: 应用开发人员通过着眼于软件栈顶层的应用,从上往下寻找性能优化的机会. ... 
随机推荐
- js判断字符串是否包含某个字符串
			String对象的方法 1,indexOf() (推荐) 方法可返回某个指定的字符串值在字符串中首次出现的位置.如果要检索的字符串值没有出现,则该方法返回 -1 var str = "123 ... 
- hdu   超级楼梯  解题报告
			题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2041 哦--对了,这些题读者可以直接忽略,我只是想练习一下自己薄弱的地方...... 题目意思我就不说 ... 
- DBA之RMAN备份
			13:00 backup database backup db :3h 3h: 产生了10 archive log file 16:00 finish restore database; 13 ... 
- hihocoder-1347 小h的树上的朋友(lca+线段树)
			题目链接: 小h的树上的朋友 时间限制:18000ms 单点时限:2000ms 内存限制:512MB 描述 小h拥有n位朋友.每位朋友拥有一个数值Vi代表他与小h的亲密度.亲密度有可能发生变化. 岁月 ... 
- View Controller Programming Guide for iOS---(五)---Resource Management in View Controllers
			Resource Management in View Controllers View controllers are an essential part of managing your app’ ... 
- linux中用无名管道进行文件的读写
			1管道是什么: 水管子大家知道,有两端,在此一端用来读一端用来写,其中一端的输出作为另外一端的输入. 2 函数原型 int pipe(int pipefd[2]);//参数中分别代表的两端 3 例子: ... 
- Redis高级
			Redis高级 redis数据备份与恢复 Redis SAVE 命令用于创建当前数据库的备份. redis Save 命令基本语法如下: redis 127.0.0.1:6379> SAVE 实 ... 
- HDU 2077 汉诺塔IV (递推)
			题意:... 析:由于能最后一个是特殊的,所以前n-1个都是不变的,只是减少了最后一个盘子的次数,所以根据上一个题的结论 答案就是dp[n-1] + 2. 上一题链接:http://www.cnblo ... 
- JAVA基础--JAVA语言组成01
			2. 标识符 2.1. 定义: 就是用来起到 标识作用的符号: (就是程序员对自己定义的东西起的名字) 2.2. 命名规则(语法规定的,必须遵守的): 1.可以由大小写字母.数字.下划 ... 
- python 字符串操作二 内建函数
			一.查看字符串的内建函数 >>> dir(str) ['__add__', '__class__', '__contains__', '__delattr__', '__dir__' ... 
