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

java应用性能指标

再想一想。

性能和可靠性相关吗? 还是这些东西相互排斥? 我认为是后者。 如今,现实是IT部门将应用程序的性能和可靠性视为同一事物,但这离事实还差得远。

让我们看看一级方程式车队如何管理性能和可靠性。

上赛季迈凯轮本田车队既慢又不可靠。 法拉利本赛季在排位赛中表现很快,但是在比赛中并不可靠。 另一方面,梅赛德斯在过去的两年中一直超级敏捷,超级可靠,这让所有人都望而却步。

性能

F1赛车通常受以下三个因素影响:动力单元,发动机映射和空气动力阻力/下压力。

引擎图指示了动力单元从可用资源(空气,燃料和电力)中消耗了多少资源。 空气动力阻力/下压力由汽车周围的气流管理方式决定。

更大的功率和更低的阻力意味着更少的阻力,更快的加速度和更高的顶端速度。

下压力越大,拐角处的抓地力/速度越大。 性能就是F1赛车在赛道上跑得有多快。 F1车队在一个典型的周末将对汽车的设置进行数百次更改,希望每十分之一秒都能解锁一次,这样他们就可以超越排位赛并参加比赛。

同样,应用程序性能受三件事影响:JVM运行时,应用程序逻辑和事务流。

应用程序逻辑消耗了JVM运行时的资源(线程,cpu,内存等),并且事务流由每个事务必须跨越基础结构组件或第三方Web服务进行的跃点数决定。

性能与计时最终用户请求(页面/事务)以及了解应用程序逻辑和事务流之间的端到端延迟有关。 像F1工程师这样的开发人员将进行数百项更改,希望优化最终用户体验,从而使业务受益。

性能的主要度量单位是响应时间,因此,在管理此性能时,诸如AppDynamics,New Relic和Dynatrace之类的Application Performance Monitoring(APM)解决方案是头等大事。

可靠性

F1赛车通常受其工程组件,赛车ECU和百万传感器输入,参数和功能的质量影响。

一些意外参数,赛车将立即停止。 去年,尼科·罗斯伯格(Nico Rosberg)两次发生事故,当时他的方向盘和电子设备停滞不前。

对F1汽车的性能进行故障诊断与对其可靠性进行故障诊断有很大不同,它们是有些不同的用例,需要不同的遥测,工具和观点。 可靠性是关于了解事情为什么破裂以及事情为什么运行缓慢的原因。

对应用程序的处理相同,只是当应用程序崩溃时,这是因为应用程序逻辑在某处发生故障,从而引发了错误或异常。 这与运行缓慢的应用程序逻辑有很大不同。

应用程序逻辑接受输入,对其进行处理并创建某种输出。 与F1赛车一样,应用程序具有成千上万个具有数百万行代码的组件(功能),每个代码行可同时处理数十万个参数(对象和变量)。 没有可靠性,性能无关紧要。 日志文件是错误和异常所在的地方。

问题:慢航班搜索比航班预订错误重要吗?

答案:它们都会杀死企业,因此您需要同时管理两者。

维珍大西洋

航班预订失败

欢迎来到废话数据世界

假设这些APM解决方案在管理性能方面做得很好。 我们的行业仍然坚信,日志文件(或某些供应商称之为大数据)是理解应用程序失败原因的答案。 我实际上将这种方法称为“废话数据”。

日志文件缺乏深度,上下文和洞察力,对于任何真正想找到应用程序故障的真正根本原因的人来说。 当然,日志文件总比没有好,但是让我们看一下开发人员需要哪些数据才能始终找到根本原因:

  1. 应用程序堆栈跟踪 –显示哪个应用程序组件(类/方法)是故障的一部分
  2. 应用程序源代码 –显示导致失败的代码行
  3. 应用程序状态 –显示组件/源代码处理的应用程序参数(对象,变量和值)

今天,大多数日志文件将包含数百万个重复的应用程序堆栈跟踪。 这就是Splunk之所以价值60亿美元的原因,因为每条重复的堆栈跟踪信息都会花费$$$来解析,索引,存储和搜索。

是的,开发人员可以自定义应用程序日志以将所需的任何数据放入其中。 坏消息是,由于开销,开发人员无法记录所有内容,而创建有意义的日志通常需要知道将在应用程序中破坏什么。

没有水晶球,就不可能创建有效的日志文件,这就是为什么团队仍然要花费数小时或数天来寻找大海捞针的原因。 没有应用程序源代码或状态意味着操作和开发必须猜测。 这不好。 不幸的是,堆栈跟踪是不够的。 在F1中,这就像梅赛德斯维修站工作人员告诉他们的工程师“我们的遥测技术刚刚确认Nico的方向盘坏了,这是我们仅有的遥测技术–您能找出原因并尽快修复它”。

您能想象工程师会怎么想吗? 不幸的是,这是大多数开发人员今天在得知应用程序出现故障时的想法。

好消息是,现在可以知道生产中何时以及为何中断应用程序代码。 欢迎来到塔基皮 。

现在,不可能的事情成为可能,并且日志文件到此结束。

翻译自: https://www.javacodegeeks.com/2016/04/performance-vs-reliability-java-apps-like-f1-cars.html

java应用性能指标

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/336059.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

tomcat ajp协议安全限制绕过漏洞_Apache Tomcat文件包含漏洞(CVE20201938)复现

一、漏洞背景2020年02月20日,国家信息安全漏洞共享平台(CNVD)发布了关于Apache Tomcat文件包含漏洞(CVE-2020-1938/CNVD-2020-10487)的安全公告。Tomcat作为一款免费开源轻量级的web应用服务器,广泛应用于并发量不是很高的场合,Tomact默认端口…

【H.264/AVC视频编解码技术】第三章【熵编码】

熵编码的概念 熵:化学与热力学概念,用于度量能量退化的指标。熵越高,物体/系统做工能力越低。 信息学中的熵:用于度量消息的平均信息量,和信息的不确定性。越是随机的,前后不相关的信息,其熵越…

mock 抛出一个异常如何终止_教你使用Mock完成单元测试

更多精彩文章请关注本人微信公众号1、什么是Mock?mock是在测试过程中,对于一些不容易构造/获取的对象,创建一个mock对象来模拟对象的行为。比如说你需要调用B服务,可是B服务还没有开发完成,那么你就可以将调用B服务的那部分给Moc…

jconsole查看连接数_在JConsole和VisualVM中查看DiagnosticCommandMBean

jconsole查看连接数我已经将JConsole用作合适的通用JMX客户端已有很多年了。 该工具通常随Oracle JDK一起提供,并且易于使用。 在JMX交互方面,JConsole优于VisualVM的最大优点是JConsole带有内置的MBeans选项卡,而必须为VisualVM中的相同功能…

剑指 Offer 40-----50

50. 第一个只出现一次的字符 原题链接 class Solution { public:char firstUniqChar(string s) {char res ;if(!s.size()) return res;unordered_map<char, int> mmp; for(int i 0; i < s.size(); i) {mmp[s[i]] 1;}for(int i 0; i < s.size(); i){if(mmp[s…

jpa root.join_JPA 2.1和Java EE 7中的JPQL增强功能(第1部分– JOIN ON)

jpa root.joinJava EE 7已经存在了几年&#xff0c;并且提供了一些非常有用且期待已久的功能&#xff0c;例如实体图以及对存储过程和结果映射的更好支持。 有关概述&#xff0c;请参阅Thorben Janssen的博客文章 。 但是&#xff0c;我想添加有关JPA查询语言功能的更详细的摘要…

如何知道一个域名是否存在_域名检测API实现查看一个域名在微信中是否被封

针对微信转发分享链接过程中&#xff0c;您宝贵的域名被微信检测系统过滤拦截而无法正常浏览&#xff0c;例如该网页包含诱导分享内容&#xff0c;被多人投诉等&#xff0c;又例如提示该网页已停止访问等提示。怎么查询域名在微信中是否被封了呢?以上接口可检测到域名的四种异…

LeetCode题集大全

LeetCode 01. 两数之和 LeetCode 02.两数相加 LeetCode 03. 无重复字符的最长子串 LeetCode 07. 整数反转 Leetcode 08. 字符串转换整数 (atoi) LeetCode 09. 回文数 LeetCode 13. 罗马数字转整数 LeetCode 15 二进制中1的个数 Leetcode 19. 删除链表的倒数第N个节点 Le…

qt4.8创建.pri_注意Java 8的[Pri​​mitive] Stream.iterate()中的递归

qt4.8创建.priTagir Valeev关于Stack Overflow的一个有趣问题最近引起了我的注意。 为了简短起见&#xff08;请阅读问题的详细信息&#xff09;&#xff0c;而以下代码则有效&#xff1a; public static Stream<Long> longs() {return Stream.iterate(1L, i ->1L l…

量化指标公式源码_通达信指标公式源码线上阴线指标公式

工作线:(EMA(C,14)),POINTDOT,LINETHICK3,COLOR22ACDE;生命线:(MA(C,25)),LINETHICK1,COLORMAGENTA;不惑线:(MA(C,40)),COLORCYAN,LINETHICK1;姊妹线:(EMA(C,56)),POINTDOT,COLOR33CCDD,LINETHICK1;A3:EMA((((SLOPE(C,21)) * 20) C),68);A4:EMA(C,10);A5:REF(C,2);A6:((SMA((M…

归并排序 自带时间复杂度测试

//时间复杂度 O(N*log2N) //稳定程度&#xff1a; 稳定 /* 确定分界点&#xff0c;中间位置 两端排序 归并&#xff0c;合二为一 */#include<iostream> #include<time.h> using namespace std; int tmp[250001]; void Sort(int List[], int l, int r);int main()…

python 图像变化检测_python hough变换检测直线的实现方法

1 原理2 检测步骤将参数空间(ρ,θ) 量化成m*n(m为ρ的等份数&#xff0c;n为θ的等份数)个单元&#xff0c;并设置累加器矩阵&#xff0c;初始值为0&#xff1b;对图像边界上的每一个点(x,y)带入ρxcosθysinθ&#xff0c;求得每个θ对应的ρ值&#xff0c;并在ρ和θ所对应的…

ruby elixir_如何使用Elixir和Phoenix快速入门构建CRUD REST API

ruby elixir这篇文章将展示如何使用Elixir和Phoenix框架构建REST API。 重点将是为持久化到Postgres数据库后端的模型提供CRUD&#xff08;创建&#xff0c;读取&#xff0c;更新&#xff0c;删除&#xff09;端点。 我应该警告你&#xff1b; 这是一个简单的例子。 但是&#…

LeetCode 07. 整数反转

原题描述 个人解法思路 class Solution { public:int reverse(int x) {int temp0;//需要返回的最后结果while(x!0){if(temp>INT_MAX/10 || temp<INT_MIN/10)return 0;temptemp*10x%10; //个位变十位 同理xx/10; //进行降位} return temp;} };

苹果开发者账号可以创建多少测试证书_ios苹果企业账号你所不知道的那些点

在2019年的时候苹果审核机制一下子就变得越来越严格了&#xff0c;现在我们想要通过苹果的官方网站去申请一个全新的ios苹果企业账户就是会非常的困难&#xff0c;很多公司有的也没有达到资格&#xff0c;ios开发商在申请苹果企业账号的时候&#xff0c;一方面需要像苹果提供大…

slf4j 记录日志文件_教程:正确的SLF4J日志记录用法以及如何检查它

slf4j 记录日志文件SLF4J是一个非常流行的日志记录外观&#xff0c;但是&#xff0c;就像我们使用的所有库一样&#xff0c;我们有可能以错误的方式或至少以一种非最佳方式使用它。 在本教程中&#xff0c;我们将列出常见的日志记录错误以及如何使用FindBugs检测到它们。 我们…

Leetcode 146. LRU 缓存机制

原题链接 题解&#xff1a;双链表哈希表 class LRUCache { public:struct Node {int key, val;Node *left, *right;Node(int _key, int _val): key(_key), val(_val), left(NULL), right(NULL) {}}*L, *R;unordered_map<int, Node*> hash;int n;void remove(Node* p) {…

Leetcode 28. 实现 strStr()

原题链接 解&#xff1a;KMP算法 class Solution { public:int strStr(string s, string p) {if (p.empty()) return 0;int n s.size(), m p.size();s s, p p;vector<int> next(m 1);for (int i 2, j 0; i < m; i ) {while (j && p[i] ! p[j …

jsf和jsp_带有JSF,Servlet和CDI的DynamicReports和JasperReports

jsf和jsp在此示例中&#xff0c;我将展示如何将DynamicReport和JasperReports与Servlet和CDI集成。 工具&#xff1a; TIBCO Jaspersoft Studio-6.0.4。最终版 Eclipse Luna服务版本2&#xff08;4.4.2&#xff09;。 WildFly 8.x应用程序服务器。 这是Eclipse上项目层次结…

接口隔离原则_设计模式的三大分类及六大原则

设计模式(Design pattern)代表了最佳的实践&#xff0c;通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。设计模式分为三大类&…