性能VS可靠性:为什么Java程序像F1赛车

原作者:Steve Burton - April 20, 2016
原文链接
译者:Lulu_zhu-April 28, 2016


思考应用性能和可靠性是相同的吗?三思。

性能和可靠性是相关的吗?还是说这两者是相互对立的呢?我认为是后者。然而当下的现实情况是,IT从业者把应用性能和可靠性视为同一件事,这差事实十万八千里。

让我们来看下方程式赛车团队是如何处理性能和可靠性的吧。

上个赛季,迈凯伦-本田车队表现得既慢而不可靠。而法拉利在这个赛季的排位赛变快了,但在比赛中仍是不可靠的。而在另一方面,梅赛德斯在过去两年中依靠着速度越来越快和越来越可靠的性能,秒杀群雄。

性能

一辆F1赛车的性能显著得受三方面影响-发动机组,引擎和空气阻力/下压力。

发动机控制参数图可以显示发动机组消耗的可用资源(包括进气量,油耗和电耗。通过管理赛车周围的气流可以描述空气阻力/下压力。

更强大的动力和小阻力意味着更少的阻力,更快的加速度和更高的最快时速。

更强的下压力意味着赛车随之在弯道会有更强抓地力和更快的速度。对于F1赛车来说,性能就是赛车能以多快的速度绕一圈赛道。F1团队可能会在特定的周末对赛车的设置做上百种调整,希望赛车每十分之一秒开启超性能,跑赢其他竞争者。

类似的,程序性能显著得受三方面影响:JVM runtime,应用程序逻辑和业务流程。

应用程序逻辑消耗JVM runtime中的资源(包括线程,CPU,内存等),业务流程图展示了每个业务流程和基础构件或者第三方web services的交互。

性能是关于终端用户请求(页面/会话)的时机和应用逻辑和业务流之间的端对端的延时协议。开发者就像F1引擎,为了优化终端用户的体验以及商业效益,会做出上百种变化。

描述性能的首要单位是反应时间,同样地,当需要管理反应时间的时候,像AppDynamics,New Relic和Dynatrace应用性能监视器方案就是老大哥了。

可靠性

一辆F1赛车显然是受工程部件质量,电子控制单元和传感器上百万临时输入,参数和方法的影响。

遇到一些意想不到的因素,赛车会立即停止。去年Nico Rosberg就发生过两次,他的方向盘和电动转向在赛事中锁死,然而仍以些许优势成为最快的赛车。

诊断一辆F1赛车的性能是不同于诊断其的可靠性,它们是稍微不同的用例,需要不同的遥测,工具和角度。

相对于为什么跑得慢,可靠性帮助理解为什么会坏了。

对于应用程序则是同样的,当且仅当程序奔溃的时候,这是因为程序在某处出错了,产生了一个错误或者一个可抛的异常。这和程序运行缓慢是十分不同的。

应用程序获取输入数据,处理数据然后产生某些输出数据。像F1赛车,应用有成百上千的零件(方法),上百万行的代码,每一行在同一时间内处理一些参数(对象和变量)。性能和可靠性是相关的。日志文件里面包含了错误和异常信息。

Q:航班的缓慢搜索或多或少比航班预定失败重要吗?

A:它们都会让你丧失生意,所以需要把它们都解决。

欢迎来到垃圾数据的世界

假设那些APM解决方案很高效的管理好了性能。我们的行业仍然相信,日志文件(或者某些供应商称之为大数据)可以用来研究应用程序崩溃的原因。实际上,我认为这一方法更像垃圾数据。

对于想要找到程序崩溃的根本原因,日志文件缺少深度,上下文语境和说服力。当然,有日志文件总比没有好。让我们来看下,对于一个想要持续找到根本原因的开发者来说,需要什么数据:

  • 程序堆栈轨迹-表明程序奔溃的部分(类/方法)
  • 程序源码-表明哪一行代码导致了奔溃。
  • 程序状态-表明被组件和源码处理的程序参数(对象,变量和值)

现如今的大部分日志文件包含了上百万行的程序堆栈轨迹。这也就是为什么Splunk 值6百万美刀的原因,因为每一个复制的堆栈需要花费$$$去解析,索引,存储和搜索。

是的,开发者们可以定制自己想要的程序日志。坏消息是,因为系统开销和创建有意义的日志通常需要了解在程序中奔溃的地方,所以开发者们不可能记录下所有信息。

不通过预测是不太可能生成有效高效的日志文件的-所以开发团队仍然花费大量时间大海捞针。没有程序源码或者程序状态意味着操作和开发就得靠猜了。这是很糟糕的。

不幸的是,光有堆栈轨迹并不足够。这就像在F1中,Mercedes修理加油站的伙计高速他们的工程师“我们的遥测刚确认Nico的方向盘坏了,我们只能确认这个-请你们弄清楚是为什么,然后尽快修理好”

你能想象工程师会怎么想吗?不幸的是,这也是大部分开发者们现如今遇到程序奔溃时的想法。

好消息是,现在已经可以在生产中弄清楚程序在什么时候和因为什么原因奔溃了。欢迎了解Takipi。

不可能现如今已经成为可能,日志文件已经穷途末路了。

Steve

性能VS可靠性:为什么Java程序像F1赛车相关推荐

  1. java应用性能指标_性能与可靠性:Java应用为何像F1汽车

    java应用性能指标 再想一想. 性能和可靠性相关吗? 还是这些东西相互排斥? 我认为是后者. 如今,现实是IT部门将应用程序的性能和可靠性视为同一事物,但这离事实还差得远. 让我们看看一级方程式车队 ...

  2. 性能与可靠性:Java应用为何像F1汽车

    再想一想. 性能和可靠性相关吗? 还是这些东西相互排斥? 我认为是后者. 如今,现实是IT部门将应用程序的性能和可靠性视为同一事物,但这离事实还差得远. 让我们看看一级方程式车队如何管理性能和可靠性. ...

  3. 性能与可靠性:Java应用为何像一级方程式赛车

    这篇文章最初发布在Takipi博客上-Java和Scala异常分析和性能监控. 让我们看看一级方程式车队如何管理性能和可靠性. 上赛季迈凯轮本田车队既慢又不可靠. 法拉利本赛季在排位赛中表现很快,但是 ...

  4. 想知道Java程序如何才能提高性能吗?

    介    绍 在本文中,我们将讨论一些有助于提高Java应用程序性能的方法.我们将从如何定义可衡量的性能目标开始,然后查看不同的工具来衡量和监控应用程序性能,并找出瓶颈. 此外,还将介绍一些常见的Ja ...

  5. 《Java程序性能优化》之设计优化

    豆瓣读书:http://book.douban.com/subject/19969386/ 第一章 Java性能调优概述 1.性能的参考指标 执行时间: CPU时间: 内存分配: 磁盘吞吐量: 网络吞 ...

  6. 90 % Java 程序员被误导的一个性能优化策略

    转载自   90 % Java 程序员被误导的一个性能优化策略 我们经常看到一些 Java 性能优化的书或者理念,说不要在循环内定义变量,这样会占用过多的内存影响性能,而要在循环外面定义.接触 Jav ...

  7. java端到端_Java应用程序性能监控:复杂分布式应用程序的端到端性能

    java端到端 通过从您的应用程序学习企业APM产品,发现更快,更有效的性能监控. 参加AppDynamics APM导览! 在最复杂和分布式环境中端到端监视Java应用程序性能-专注于业务事务. 自 ...

  8. Java 程序性能优化《第一章》Java性能调优概述 1.4小结

    Java 程序性能优化<第一章>1.4小结 通过本章的学习,读者应该了解性能的基本概念及其常用的参考指标.此外,本章还较为详细的介绍了与性能调优相关的两个重要理论--木桶原理以及Amdah ...

  9. Java程序性能优化——设计优化

    原文出自:http://blog.csdn.net/anxpp/article/details/51914119,转载请注明出处,谢谢! 1.前言 OK,之前写了一篇文章:"23种设计模式介 ...

最新文章

  1. Java数据结构和算法的数组
  2. H3C对IP存储有全面且独到认识
  3. angular具体用法及代码
  4. 关于ArcGIS JS API中的map高度为400px的问题解决
  5. 过滤器获取service方法返回慢_Gateway:自定义过滤器
  6. 开发工具使用技巧和插件大总结
  7. hook 监控文件 c++_技术分享 | Linux 入侵检测中的进程创建监控
  8. Kneron用“重组”方案精简深度学习算法,芯片产品明年开售
  9. 基于日志处理的ElasticSearch的学(gen)习(feng)
  10. php 批量采集 邮箱,万能全网邮箱批量采集工具按照关键字搜索邮箱教程
  11. 关于饿了么ui框架的使用之Form 表单的应用
  12. POJ 2240 Arbitrage——spfa判正环||flody
  13. 天顶角、太阳方位角和太阳高度角辨析
  14. 【机器学习实战系列】读书笔记之AdaBoost算法公式推导和例子讲解(一)
  15. java电子通讯录毕业设计_JAVA电子通讯录(带系统托盘)009
  16. 北德克萨斯大学计算机系,美国北德克萨斯大学计算机科学与工程系主任Barrett Bryant访问昆明理工大学...
  17. android webView 全屏播放网络视频
  18. Intellij idea和eclipse快捷键—快速复制当前行到上一行或者下一行失效解决
  19. libjpeg库和libpng库的移植和使用
  20. 前端使用sm2、sm3加密解密 案例

热门文章

  1. 作业6:基于CNN的XO识别 深度学习 手搓卷积代码
  2. 纽卡斯尔计算机学院地址,2020年纽卡斯尔大学科学与信息技术学院具体地址及在哪个校区?...
  3. 去掉 java 安全警告_Win10打开文件时安全警告怎么关闭
  4. sql server 2019数据库安装包 免费下载
  5. 网络舆情热点发现及分析(single-pass聚类)
  6. [个人笔记]HCIP-Routing Switching-IENP/H12-222
  7. 基于Airtest陀螺世界辅助源代码
  8. APP上架 苹果应用商店AppStore 需准备素材
  9. 在路由器上Ez***的应用配置
  10. mininet简介(一:官网翻译)