java 性能调优

我们在2014年10月进行了Java性能调优调查。该调查的主要目的是收集对Java性能世界的见解,以改善Plumbr产品。 但是,我们也很高兴与您分享有趣的结果。 我们收集的数据为进行冗长的分析提供了素材,因此我们决定将结果划分为一系列博客文章。 这是第一个,试图回答以下问题:

  • 谁处理Java性能问题?
  • Java性能问题有多广泛?
  • 解决这些问题需要多长时间?
  • 这个时间花在哪里?

回答我们调查的工程角色

2014年10月,共有308位受访者接听了我们的电话,并完成了调查。我们还根据其角色对受访者进行了介绍,以下图表说明了使用的不同标题:

进一步放大此分布,可以说数据是由响应者角色分配的,如下所示:

  • 73%工程
  • 6%的运营
  • 2%质量检查
  • 14%管理
  • 5%无法分类

我们可以得出结论,该调查主要基于工程角色,而管理层,运营和质量保证人员则略有不同。

93%的受访者在过去一年中遇到了绩效问题

“在过去的12个月中,您是否遇到过Java性能问题?” 这是为其余调查奠定整体基础的第一个问题。 在308位受访者中,有286位( 占93%)确认他们在去年遇到了Java性能问题 。 对于这286人,我们在调查中还有9个问题需要回答。

对于其余22位在去年没有遇到任何Java性能问题的人,这也是该调查的最后一个问题。

我们确实承认回答我们调查的人员的选择可能有偏见,并且这个数字并不真正代表Java世界的地位。 毕竟,当您构建性能监视工具时,那些经常在您的网站上闲逛的人更可能最近参与了性能监视领域。 因此,我们不能真正宣称93%的Java应用程序工作人员每年都会遇到性能问题。

我们可以肯定地说的是,我们从286个有关Java应用程序性能问题的独特示例中获得了数据。 因此,让我们看看问题到底是什么。

大部分时间都花在复制,证据收集和根本原因分析上。

在308位受访者中,有156位选择回答“过程中最耗时的部分”的问题。 这是一个自由文本问题,我们能够对146个答案进行分类。

这些答案被证明是调查中最有趣的结果之一。 令人惊讶的是,有76%的受访者在“ 试图复制-收集证据-理解证据-将证据与根本原因联系起来 ”循环中挣扎最多:

  • 受访者的20% 大部分的时间试图重现该问题,这样他们就可以开始收集证据
  • 25%的人在尝试收集证据 (例如日志文件或堆/线程转储)和理解证据方面最费力
  • 30%花费的大部分时间 试图 证据源代码/配置链接到的根本原因

公平地说,您还应该注意,有相当多的受访者(13%)声称,为该问题建立实际的解决方案是该过程中最耗时的部分。 尽管这是一个可观的数额,但仍比大多数用户花费在试图找出根本原因的恶性循环中的花费少五倍多。

您花了多长时间解决性能问题?

在本节中,我们要求受访者量化他们试图发现根本原因时所面临的痛苦。 同样,我们有284位受访者回答了这个问题:

答案证实,即使某些情况很容易检测和排除故障,但大多数性能问题还是很难解决的。 荣誉给个答复谁发现,在不到一个小时的固定的问题,但让我们一会儿,专注于48名受访者停止(的情况下,17%),对他们来说,跟踪下来,并解决性能问题意味着多了一个花了一个月。

解释以上数据的另一种方法是查看花费的中位数和平均时间:

  • 中位数时间落在“超过一天但不到一周”的范围内,这意味着花了几天的时间进行检测和故障排除。
  • 由于缺少上界,因此平均值的计算有些棘手,但是当假设“一个多月”转化为“恰好两个月”时,用于查找和修复根本原因的平均时间为80个小时

如果我们看一下所花费的总时间,这些数字看起来就更令人恐惧了– 284名受访者总共花费22,600个小时来检测和解决单个性能问题。 这相当于超过130个工作月 。 仅仅考虑这个数字就清楚地表明该领域迫切需要更好的解决方案。

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

java 性能调优

java 性能调优_Java性能调优调查结果(第一部分)相关推荐

  1. java dump分析工具_Java 性能分析工具 (2):Java 内置监控工具

    引言 本文为 Java 性能分析工具系列文章第二篇,第一篇:操作系统工具.在本文中将介绍如何使用 Java 内置监控工具更加深入的了解 Java 应用程序和 JVM 本身.在 JDK 中有许多内置的工 ...

  2. java dump分析工具_java性能分析与常用工具

    本次源码已放在Github:https://github.com/nateshao/jvm-tuning 个人博客 https://nateshao.gitee.io http://www.nates ...

  3. java g1 收集调优_Java性能调优:充分利用垃圾收集器

    java g1 收集调优 JVM背后发生了什么,垃圾回收如何影响Java性能? 性能调优世界是一个危险的地方,一个JVM标志失衡,事情很快就会变得繁琐. 因此 ,我们决定求助于Java性能调优专家, ...

  4. java 性能调优_Java性能调优调查结果(第四部分)

    java 性能调优 这是本系列中的最后一篇文章,我们将分析我们在2014年10月进行的Java Performance Tuning Survey的结果.如果您尚未阅读第一篇文章,建议您首先阅读以下内 ...

  5. java 性能调优_Java性能调优调查结果(第三部分)

    java 性能调优 这是本系列文章的第三篇,我们将分析2014年10月进行的调查的结果.如果您尚未这样做,我建议从本系列的前两篇文章开始: 问题严重性分析和监视域分析 . 这篇文章着重于故障排除/根本 ...

  6. java 性能调优_Java性能调优调查结果(第二部分)

    java 性能调优 这是系列文章的第二篇,我们将分析2014年10月进行的性能调整调查的结果.如果您尚未阅读第一部分,我们建议从此处开始 . 第二部分将重点监视Java应用程序的性能问题. 特别是,我 ...

  7. java8 虚拟机调优_Java虚拟机调优(八)-典型配置举例2

    背景: java虚拟机的东西,一直想分享下,弄了半天,太过理论了,也写不出太多特别的东西,看已经有朋友分享的很好了,还整理成了一个系统,就转载下,希望对朋友们有用,欢迎关注老王公众号[软件老王],关注 ...

  8. java性能分析工具_java性能分析工具

    如何利用 JConsole观察分析Java程序的运行,进行排错调优 http://jiajun.iteye.com/blog/810150 如何使用JVisualVM进行性能分析 http://jia ...

  9. 开源java性能分析工具_Java性能监控:您应该知道的5个开源工具

    开源java性能分析工具 鲜为人知但有用:开源应用程序性能监视的状态 对于任何应用程序来说,最重要的事情之一就是性能. 我们要确保用户获得他们能获得的最佳体验,并想知道我们的应用已启动并正在运行. 这 ...

最新文章

  1. Python使用matplotlib或者Seaborn箱图(boxplot)可视化时汉语(中文)标签显示成了框框□□、什么情况、我们有解决方案。
  2. python可变参数的特点_可变参数**kwargs传入函数时的存储方式为( )_学小易找答案...
  3. ARM的存储器映射与存储器重映射【转载】2009-12-14 10:29最近在用LPC2148,看到了一篇文章,感觉很有帮助,就转了过来。
  4. GM6 pageset - DB get scenario
  5. 30 行代码实现蚂蚁森林自动“偷”能量
  6. WindowsForm如何实现类似微软project软件的甘特图?
  7. python与excel-Python 与 Excel 终于在一起了
  8. UE4之cmd调用函数
  9. Git commit --amend 修改提交信息
  10. 扫雷php,扫雷php
  11. 共阳极管的代码_共阳极数码管显示数字程序的进化
  12. ORACLE MERGE INTO语句,unable to get a stable set of rows in the source tables报错解决
  13. 互联网医疗平台(图文问诊、视频问诊、电话问诊、预约挂号、复诊开药)
  14. 《利用python进行数据分析》读书笔记--第十一章 金融和经济数据应用(一)
  15. java打字小游戏源码_求JAVA编写打字游戏源代码!
  16. Unity实现弹幕功能
  17. 【技术美术图形部分】简述主流及新的抗锯齿技术
  18. 如何安装husky_Husky robot 玩耍1
  19. Nginx网站服务配置(Nginx服务基础,访问状态统计,访问控制,虚拟主机)
  20. ZigBee定位系统与网络拓扑

热门文章

  1. P6772-[NOI2020]美食家【矩阵乘法,倍增】
  2. jzoj3832-在哪里建酿酒厂【指针】
  3. 主席树 - 可持久化线段树
  4. 【期望】乘坐电梯(金牌导航 期望-2)
  5. K8S Learning(10)——Pod配置
  6. JavaFX其他事件
  7. MyBatis】MyBatis一级缓存和二级缓存
  8. Java中的基本数据类型转换(自动、强制、提升)
  9. 集合总结(Collection)
  10. 面象对象设计6大原则之二:开放封闭原则