Java性能调优调查结果(第四部分)

这是系列文章中的最后一篇,我们将分析我们在2014年10月进行的Java Performance Tuning Survey的结果。如果您还没有阅读第一篇文章,我建议您首先阅读以下内容:

  • 性能问题的频率和严重性
  • 最受欢迎的监控解决方案
  • 查找根本原因的工具和技术

这篇文章打开了一些有趣的相关数据,并总结了结果。

复制是快速成功的关键

当您负责解决性能问题时,您需要证据来找到根本原因。 为了获得证据,您通常需要重现问题。 在调查中,我们询问了受访者是否能够重现该问题 :

  • 9%不需要复制,已经有足够的证据
  • 27%无法重现该问题
  • 64%设法重现了问题

在另一个问题中,我们问“ 找到并解决您面临的问题需要多长时间”。 平均而言,这花费了80个小时 。 我们分析了是否有27%无法重现该问题的人是否还在苦苦挣扎。 结果很明显:

  • 如果受访者能够重现问题,则平均需要65个小时
  • 如果响应者无法重现该问题,则 需要花费 113个小时或74%的时间才能找到根本原因并加以解决。

区别清晰可见。 造成这种差异的原因隐藏在故障排除过程中。 要解决问题,您需要证据,通常是从各种来源收集的证据,例如日志文件,线程转储或堆转储。 但是,只有能够重现此案(最好随意),您才能获得证据。 如果您无法重现问题,那么您将没有证据,而且武库中唯一的工具往往是良好的旧尝试和错误。 面对超过100,000行代码,您注定会在此过程中面临许多失败的尝试。

有些问题比其他问题要难。

受访者还向我们提供了他们正在解决的性能问题的根本原因。 我们研究了不同的问题,以了解某些问题是否比其他问题更难解决

让我们再次回顾一下,发现和解决问题的平均时间为80个小时。 按问题类型分类时,我们发现了以下内容:

  • 查找和修复最简单的问题与网络IO有关:平均花费51个小时。
  • 内存泄漏按花费的时间准确地排在平均水平:平均发现并修复一个泄漏要花费80个小时24分钟。
  • 另一方面是架构问题–根本原因与整体架构和HTTP会话膨胀有关,分别花费了98 和105个小时。 查找和解决原因的时间增加了大约100%

Java花费的时间进行故障排除

从极端来看,这实际上并不奇怪。 当您的体系结构引起性能问题时,修复程序本身往往很复杂且耗时,因此需要更多的时间来修复。 而且当您倾向于滥用网络时,它通常可以归结为一个恶意呼叫,您可以轻松地对其进行隔离和修复。

随机工具帮助

接下来,我们分析了用于解决某些潜在根本原因的工具和技术。 我们注意到,平均而言,用户不会尝试更多,至少四个不同的工具来收集证据并找到根本原因 。 最流行的工具和技术涉及日志分析,堆/线程转储和分析器。

当我们研究工具在各种潜在问题中的使用时,我们真的感到非常惊讶。 根本的问题和用于进行故障排除的工具之间几乎没有关联-列出了相同的工具,而频率与出现的问题无关。

最好的例子可能是线程转储分析。 这是收集有关并发问题的证据的好方法。 确实,解决并发问题的受访者中有52%使用线程转储分析作为根本原因分析来源之一。 但是例如,当眼前的问题是内存泄漏时,则有42%的情况列出了相同的线程转储分析。

或者,从工具的角度来看–与问题类型无关,有41-53%的受访者使用探查器来收集证据,与症状和根本问题无关。

从这些数据得出结论是很棘手的,但是看来证据收集和分析过程是非常非正式的,并且涉及使用该特定人员以前使用或听说过的工具和技术。

结论

进行这项调查是为了指导Plumbr的进一步发展。 对我们而言,主要结论基于调查的四个关键结果:

  • 查找和解决性能问题的平均时间为80小时
  • 对于76%的案例,大部分时间都花在了恶性的“试图复制-收集证据-解释证据”周期中。
  • 27%的情况无法复制。 在这种情况下,查找和解决问题所花费的时间增加了73%。
  • 证据收集过程是完全非正式的,平均涉及四个随机选择的工具

我们承诺从这里开始,并为上述问题提供解决方案。 使用Plumbr监视系统可立即将您定位到实际的根本原因,从而完全跳过“尝试重现–收集证据–解释证据”的周期:

故障排除工作流程

我们当前的产品允许线程锁定,低效率的GC和内存泄漏,但是我们一直在扩展我们的产品,因此您将拥有一个安全网来应对影响JVM的所有性能问题。

翻译自: https://www.javacodegeeks.com/2014/12/java-performance-tuning-survey-results-part-iv.html

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

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

相关文章

android eclipse 配置 在项目右击选择properties

转载于:https://www.cnblogs.com/guoxiaoyue/p/3485243.html

减少主要GC暂停的频率

这篇文章将讨论一种技术,以减少应用程序等待时间造成的垃圾收集暂停的负担。 正如我几年前所写, 在JVM中无法禁用垃圾收集 。 但是,有一个巧妙的技巧可以用来大大减少长时间停顿的时间和频率。 如您所知,JVM中发生了两个不同的GC…

WAI-ARIA对自动完成小部件的支持

在本文中,我想讨论AutoComplete小部件的可访问性。 在您键入该字段时,通常会使用“自动完成”窗口小部件提供建议。 在当前的工作中,我基于Twitter的Typeahead (一个灵活JavaScript库)实现了JSF组件,该库为…

eclipse中java.lang.OutOfMemoryError: Java heap space错误

Myeclipse中报java.lang.OutOfMemoryError: Java heap space错误 解决办法: 选中被运行的类,点击菜单‘run->run Configuration’,选择(x)Argument标签页下的vm arguments框里 输入 -Xmx800m, 保存运行。问题解决 转载于:https://www.cnblogs.com/vig…

[Vue warn]: Invalid prop: custom validator check failed for prop xxx.问题

在用vue ui框架&#xff08;iview、elementui等&#xff09;做项目&#xff0c;会遇到这种问题 这样的&#xff0c;点那都报错&#xff0c;千辛万苦的付出&#xff0c;却找不到问题在哪 其实很简单&#xff0c;报错都显示出那个组件的问题了 ‘<Form>’这个组件&#xf…

CheckList 如何梳理可减少上线的验证时间(总结篇)

对CheckList的执行发起的思考&#xff1f; &#xff08;1&#xff09;功能越来越多&#xff0c;CheckList越补充越多&#xff0c;执行CheckList时间越来越长&#xff0c;如何减少上线的验证时间&#xff1f;&#xff08;2&#xff09;减少上线验证的时间外&#xff0c;如何保证…

PrimeFaces 5.0 DataTable列切换器

我有机会与PrimeFaces 5.0 DataTable一起工作&#xff0c;并且增强功能很棒。 今天&#xff0c;我只想展示其中的一项新功能……DataTable列切换器。 此功能使您可以通过复选框列表选择显示哪些列。 要使用列切换器&#xff0c;只需添加一个commandButton即可将列选择的选择列…

使用JGit API探索Git内部

您是否想过提交及​​其内容如何存储在Git中&#xff1f; 好吧&#xff0c;我有&#xff0c;在上一个下雨的周末&#xff0c;我有一些空闲时间&#xff0c;所以我做了一些研究。 因为我对Java的感觉比对Bash的感觉要多&#xff0c;所以我使用了JGit和一些学习测试来探索提交的…

Html5 布局方式

在Html5之前&#xff0c;统一采用的是Div css的方式进行布局&#xff0c;但是却和开发人员的命名方式&#xff0c;喜好有关。在新的Html5中&#xff0c;布局却显得更加人性化&#xff0c;更易理解了。如增加了Header&#xff0c;Footer&#xff0c;Section&#xff0c;Aside标签…

PrimeFaces Mobile入门

介绍 如果您已经开发了利用PrimeFaces的应用程序&#xff0c;或者打算开发可在台式机和移动设备上使用的Web应用程序&#xff0c;请考虑将PrimeFaces Mobile用于您的移动实施。 这篇博客文章将介绍一些基础知识&#xff0c;以帮助您开始为现有的PrimeFaces应用程序开发移动界面…

attachEvent和addEventListener

attachEvent和addEventListener在前端开发过程中经常性的使用&#xff0c;他们都可以用来绑定脚本事件&#xff0c;取代在html中写 obj.οnclickmethod。相同点&#xff1a; 它们都是DOM对象的方法&#xff0c;可以实现一种事件绑定多个事件处理函数。 obj document.getElemen…

如果删除github上项目的文件

1. 你要有前面一章的开发平台和github插件&#xff0c;下面就是基于前面来做的。 如何删掉你github上的文件呢&#xff1f;想必你的电脑有一个下载的git工具了&#xff0c;如果还是没有的话&#xff0c;请用npm下载一个git。这是我已经下载好的。 2. 然后打开这个git&#xff…

在WildFly和OpenShift上的WebSocket聊天

聊天是解释WebSocket的最典型示例之一。 它是一个相当常用的界面&#xff0c;可以很容易地解释WebSocket的基本概念。 当然&#xff0c;Java EE 7 WebSocket也有一个&#xff0c; 在这里可用 &#xff01; 您可以使用以下步骤在WildFly上轻松运行它&#xff1a; curl -O http:…

Ubuntu20.04纯命令配置PCL(点云库)

Ubuntu20.04纯命令配置PCL&#xff08;点云库&#xff09; 最近在学习点云库&#xff08;PCL&#xff09;的使用&#xff0c;第一步就是在自己的电脑安装配置PCL。 首先&#xff0c;对于ubuntu 16.04以上版本&#xff0c;可以直接使用命令进行安装&#xff0c;新建好一个文件夹…

css html应用实例1:滑动门技术的简单实现

关于滑动门&#xff0c;现在的页面中好多地方都会用到滑动门&#xff0c;一般用作于导航背景&#xff0c;它的官方解释如下&#xff1a; 滑动门&#xff1a;根据文本自适应大小&#xff0c;根据背景的层叠性制作&#xff0c;并允许他们在彼此之上进行滑动&#xff0c;以创造出…

魔戒1

转载于:https://www.cnblogs.com/moonlightpeng/p/11240880.html

jQuery应用实例2:简单动画

效果&#xff1a; 代码&#xff1a; 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">2 <html xmlns"http://www.w3.org/1999/xhtml">3 <head>…

Spring Data JPA教程:简介

创建使用Java Persistence API的存储库是一个繁琐的过程&#xff0c;需要大量时间&#xff0c;并且需要大量样板代码。 通过执行以下步骤&#xff0c;我们可以消除一些样板代码&#xff1a; 创建一个抽象的基础存储库类&#xff0c;该类为实体提供CRUD操作。 创建扩展抽象基础…

对怀孕的人有害的食物。。。朋友们记住咯!(欢迎转载)

有几个同事和朋友要生BB啦&#xff0c;好东东&#xff0c;转给你们提前学习一下~ 容易流产食物&#xff1a; 1、螃蟹&#xff1a;它味道鲜美&#xff0c;但其性寒凉&#xff0c;有活血祛瘀之功&#xff0c;故对孕妇不利&#xff0c;尤其是蟹爪&#xff0c;有明显的堕胎作用。 2…

Vss服务端用户存在,但客户端登陆不进去

打开客户端Vss提示“Cannot find SS.INI file for user userName”,这个错误是找不到用户userName的SS.INI文件。 解决办法 在服务器上找到Vss共享的文件夹&#xff0c;打开此文件夹下的users文件夹&#xff0c;然后找到userName文件夹打开后&#xff1a; 如果没有SS.INI文件&a…