近日,jClarity公司发布了旗下的垃圾回收分析工具Censum的3.0版本。新版本的主要特性包括安全点(Safepoint)日志分析,图表展示G1垃圾收集器行为以及分析什么时候应用程序使用过多操作系统活动。

\\

新的G1收集器注定会成为焦点,因为G1将成为服务器配置Java 9中默认的垃圾收集器,安全点的日志分析可以帮助用户更好地进行垃圾收集调优。安全点是一种机制,它通过JVM彻底停止应用程序,以便能够执行特定的维护任务。这样,一个全面的垃圾收集(也称为Stop The World or STW )将成为促使安全点的主要原因之一,这就是垃圾收集调优为何如此受关注的原因。然而,当用户逐渐了解如何避免由GC引起的停顿,他们同时也需要考虑其他原因引起的安全点。

\\

虽然有一些进展,但是性能分析和调优对于大多数用户来说仍是一个晦涩的话题。因此,InfoQ采访了jClarity的CTO Kirk Pepperdine和CEO Martijn Verburg,以便了解更多性能的技巧和知识,以及Censum如何帮助区分这两者。

\\

InfoQ:可以寻求帮助的资源不是很多,这是性能调优方面存在的一个问题,这也是你们创建Censum的原因吗?是为了提供更多这方面的资源么?

\\

\

Kirk Pepperdine:事实上,在Censum甚至早期的jClarity工作时,它源于我对应用程序性能中内存管理重要性处理工具的失望。在Sun有一些想法构建一个框架来分析日志并创建一些图表,但结果证明只能产生一些数据点。我认为这是不够的,并得出结论认为,我要得到我所需要的,唯一的方式就是自己创建它。所以,最初,Censum只是一个我为我自己创建的工具。我从来没有想过做其他任何事情,直到我遇到了Ben Evans 和Martijn Verburg。

\

\\

InfoQ:这也是你们创建Friends of jClarity通讯录的原因吗?

\\

\

Martijn Verburg:当然。Friends of jClarity 开始创建一个社区,在这里来自世界各地的性能调优专家在一个空间,帮助在性能调优方面有问题的工程师。有一个友好和开放的列表,“没有问题是愚蠢的”,在这里有一些有经验的专家提供意见。

\\

性能调优对于大多数人是暗黑艺术,而且在博客和网站有大量的民间传说和不正确的信息,如堆栈溢出。Friends of jClarity 拥有多方面领先的性能调优专家和实际工作在Java/JVM 核心技术的工程师。列表中给出的答案和建议往往要比其他地方更准确、正确、时效性更强。

\

\\

InfoQ:谁可以或者说谁应该加入Friends of jClarity。

\\

\

Martijn Verburg:任何人都可以点击Apply to join group按钮加入。如果任何人有任何问题可以发邮件给我们支持团队:在jclarity .com的支持。

\

\\

InfoQ:对于性能调优领域的新人,很容易认为使应用程序更快的是CPU周期,但是在Censum看起来更多的是内存管理。你认为在性能调优时,还有其他什么方面的误解比较普遍。

\\

\

Kirk Pepperdine:性能调优是了解你有什么资源,哪些资源使用频率较低或过度使用。一旦你了解你的核心资源(CPU,内存,磁盘,网络,JVM线程等),以及对于这些资源输入输出定时测量,你可以很快找出瓶颈在哪,如何减少这种依赖。

\\

应用性能是CPU限制,这是一个普遍的误解。事实上,对很多应用都是特殊的,无论是Java,C#或CPU限制。我们见过不少客户花大量的钱买更大或更好的CPU,却没有看到性能的改善。

\

\\

InfoQ:总是有很多人谈论性能,解决方式不同:有的试图重写代码,有的在GC标志上进行优化,你推荐的第一步是什么?什么时候需要开始使用Censum?

\\

\

Kirk Pepperdine:如果你没有确定问题的根源是什么,很难知道怎么调优。Censum是我们用来确定问题根本原因的工具之一。一旦你确定了根本原因,如何调优会很明显。有些问题可以通过修改几个参数来解决,但在我们的经验中大部分需要通过重构组件来解决。之后,Censum可以帮助你做出调优的决定,确保GC不再出现问题。

\

\\

InfoQ:当谈到性能,很多的谈话是围绕软件,但明显的硬件起着非常重要的作用。Censum是否会给你提示,你可能需要更换硬件(如更快的CPU,更多的内存,等等)?

\\

\

Kirk Pepperdine:是的,Censum可以帮你确定你的应用程序需要多少硬件从一个内存管理点平稳运行。例如,Censum根据你设置的大小进行估计,这是常驻Java堆的总数据量。这允许你设置最大的堆大小,反过来又指导你在管理上需要多少真正的内存。

\\

另一个典型的问题是分配率(在一段时间内分配的内存量)。这些天CPU和内存子系统很快。你可以配置千兆字节每秒的数据对性能没有明显的影响。但是,如果你同一时间分配几个字节,这将是一个问题。因为大多数Java应用程序做的正是这个(同一时间分配几个字节),在分配成为主要性能瓶颈前你并不需要很高的分配率。这是可执行剖析器(execution profilers)可能错过的一个问题,即使被捕获了,往往会以一个混乱的方式暴露问题。Censum会告诉你分配率是多少,你可以使用这些信息来选择一个分配器,或者至少是更好地理解执行剖析器发出的信息。它只是简单地帮助你把系统可能发给你的信号关系理清。反过来,你会得到更好的可扩展性,这意味着你可以用更少的硬件来处理更多的负载。举个例子,我们的一个客户用Censum减少硬件需求,一个特定的情况下,服务器从80台减少到4台。

\

\\

InfoQ:Censum提供了大量的图表和指标,能告诉我们你们定义这些图表的过程吗?你们如何决定哪些是有用的图表?

\\

\

Martijn Verburg:Kirk自他第一次接触Java就开始进行垃圾收集算法调优,所以他有很多的灵感。当然,其他的团队成员也会提出建议。然而,一个主要的灵感来源于回答客户的问题:这个想法是创建新的图表,为他们提供直观的答案。

\\

例如,客户最近想知道应用中一些莫名其妙的Full GCs从哪里来。我们进行挖掘并意识到我们忽略了极少数情况下造成Full GCs的PermGen或Metaspace溢出源于什么地方。所以Kirk想出了一些新的图表展示这些事件的发生,并建立最终用户易于理解的分析报告,在线上表示\"Go and make your PermGen size X\"。

\

\\

InfoQ:G1 regionalises内存管理,而不是传统的generational内存,适应Censum有多难?

\\

\

Martijn Verburg:Censum通过JVM生成的日志文件读取GC数据,它不直接接触JVM。副作用是,访问新的数据很容易!当试图分析这些新的数据时,问题就来了。如果日志格式没有定义或标准化,并且可以被Hotspot工程师修改的非常少时,这是非常困难的。

\\

经过几个月的工作以及分析整理,我们能够通过Censum为G1创建内部数据模型。如果对内存池模型和GC行为有一个明确的结构和接口,这会变得非常容易。为G1创建图表也会非常容易,因为我们可以利用大量的已经为其他收集者创建的基础设施。

\\

建立有意义的分析是最难的部分。在G1没有太多的研究成果时,尽管人们开始使用并产生真正的生产系统中的信息,但我们不能像其他的收集者一样记录相同的日志主体。这意味着我们没有尽可能多的数据,以确定哪些是有价值的,哪些不是。

\\

在G1分析方面,我们还有很多工作要做,但至少我们现在能够提醒用户对表现不佳的应用程序或危险行为模式进行收集。

\

\\

InfoQ:Censum现在支持安全点日志,这意味着非GC STW停顿可以被分析。鉴于GC停顿是分析的主要目标,我们应该怎样看待和思考非GC停顿?

\\

\

Kirk Pepperdine:垃圾收集确实是应用程序线程JVM安全点的原因之一。还有许多其他的维护措施,也将让你的应用程序更快。偏向锁可能是最常见的一个,但不幸的是,我们不能确切知道,因为我们没有大量的数据,更糟的是,我猜测很少有人知道得到这个数据的可能性,因此,甚至更少的人可以收集。现在,Censum将这个数据可视化,我们希望改变这一状况,让人们知道他们可以如何减缓safepointing率。

\

\\

InfoQ:Censum下一步计划是什么?

\\

\

Martijn Verburg:我们正在建立一个流的版本,可以监视多个JVM实时提供同样的详细指标和分析;而且,利用实时数据可以对要发生的危险事件进行警报,甚至预测可能发生的事件,类似于“在未来2分钟你的应用有95%的可能出现内存不足错误(OOME)。”这样的警报信息。

\\

Censum也将与我们的Illuminate产品集成。总之,Illuminate分析应用程序并指示什么类型的问题最影响性能,这是内存/ GC相关的或其他的东西(例如磁盘I / O,线程死锁,线程饥饿,等待外部系统响应)。如果问题是有关GC,那么你就可以深入了解Censum的功能特性,并获得如何解决问题的一些建议。

\

\\

Martijn Verburg是jClarity联合创始人兼CEO,jClarity是一个Java/JVM性能优化公司,提供了业界领先的分析工具,通过机器学习驱动。Martijn Verburg是软件方法和技术团队优化的权威专家,拥有多年运行大型分布式项目的经验。他在大型会议做过演讲,他乐于在The Diabolical Developer 挑战行业现状。他是伦敦java社区(London Java Community)的共同领导者,领导全球人致力于采用Java标准的Adopt a JSR 和 Adopt OpenJDK项目。在2012年的贡献中,他被公认为Java冠军(Java Champion)。

\\

Kirk Pepperdine是jClarity的联合创始人兼CTO。他致力于高性能和分布式计算近20年。起初,Kirk主要从事架构、开发、Cray公司以及其他高性能计算平台上运行的应用程序调优。现在他专注于Java,从事项目生命周期各个阶段各方面的性能和调优工作。为了表彰他对Java社区的杰出贡献,2006年Kirk被评为Java冠军。

\\

查看英文原文:jClarity Releases Censum 3.0

\\


感谢张龙对本文的审校。

\

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ,@丁晓昀),微信(微信号:InfoQChina)关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入InfoQ读者交流群(已满),InfoQ读者交流群(#2))。

jClarity发布Censum 3.0相关推荐

  1. 安卓绿色联盟两项免费福利重磅发布:EMUI9.0和绿色应用2.0测试能力

    为什么要把华为的EMUI9.0系统和安卓绿色联盟绿色应用标准2.0放在一块提?有兴趣的朋友可以自行google百度,小编这里卖个关子~ 9月5日,华为正式对外发布EMUI 9.0系统,这也是目前国内首 ...

  2. Soul网关发布2.2.0:让高性能网关变得如此简单!

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者:猫大人 来源:转载自公众号「Dromara分布式事 ...

  3. 鸿蒙os2.0系统什么时候,鸿蒙OS 2.0beta什么时候发布 鸿蒙OS2.0功能介绍

    鸿蒙OS 2.0beta什么时候发布呢?华为发布了面向全场景的分布式操作系统 HarmonyOS 2.0,宣布年底面向开发者发布智能手机 Beta 版本,下面就让小编给大家介绍一下. 鸿蒙OS 2.0 ...

  4. mysql数据库行业应用_腾讯云发布MySQL 8.0数据库 可应用至更多行业场景

    原标题:腾讯云发布MySQL 8.0数据库 可应用至更多行业场景 来源:21财经 目前,腾讯云数据库已有20多种数据库服务,包括云数据库MySQL.云原生数据库CynosDB.数据库智能管家DBbra ...

  5. Soul网关发布2.2.0 | 让高性能网关变得如此简单!

    点击上方"朱小厮的博客",选择"设为星标" 后台回复"加群",加入新技术 本文来自:猫大人的Dromara分布式事务 Soul发布全新的架构 ...

  6. 龙芯发布.NET 6.0.100开发者内测版

    龙芯在龙芯开源社区发布了LoongArch64-.NET-SDK-6.0.100开发者内测版的新闻 ,龙芯.NET基于上游社区 版本 适配支持龙芯平台架构.目前支持LoongArch64架构和MIPS ...

  7. 华为鸿蒙osbeta在哪看发布会,重磅消息!华为在发布鸿蒙OS2.0手机beta版本后,又发布搭载鸿蒙的新品!!...

    原标题:重磅消息!华为在发布鸿蒙OS2.0手机beta版本后,又发布搭载鸿蒙的新品!! 就在12月16号华为刚刚发布鸿蒙OS2.0beta系统手机版本后,就在今天华为又举行了一个新品发布会,他就 是华 ...

  8. 新版手机浏览器_夸克浏览器发布全新3.0版,AI技术创新智能化信息服务

    1月3日,以轻.快为核心,主打极简体验的夸克浏览器发布全新3.0版本,推出指令控制.搜索直达.AI引擎等多个应用AI技术创新的产品功能和交互场景,同时更新品牌LOGO,持续发力智能化信息服务升级. 夸 ...

  9. 9月11号华为发布鸿蒙2.0和EMUI 11,来看看鸿蒙最牛逼的地方

    2019年发布了鸿蒙1.0 鸿蒙os 2020年9月11号将发布鸿蒙2.0 链接:https://developer.huawei.com/consumer/cn/events/hdc2020/ 什么 ...

最新文章

  1. c语言中的常用函数的使用,C语言的常用库函数使用方法分析及用途
  2. 探究php底层运行机制
  3. oracle创建表时创建序列号,oracle表中怎么建序列
  4. Dalivik垃圾回收收机制Cocurrent GC简介
  5. Redis set 类型操作及常用命令
  6. 乐哥学AI_Python(二):Numpy索引,切片,常用函数
  7. 移除集合效率高还是add高_List、set集合接口分析
  8. typecho插件库 TeStore 方便监控插件版本
  9. mysql trigger 有时 不执行_Mysql 寒假刷题TIPs
  10. 东莞村财登录显示服务器断开,“东莞村财”APP运行一年多,还有很多村民股东未注册...
  11. 女人要的安全感到的是什么?
  12. 串口监视软件_力控监控组态软件与西门子S7200
  13. 软件需求分析报告模板
  14. 2019-11-29奈奎斯特和香农定理
  15. FTP服务器的上传文件端口为,FTP服务器上传文件时的端口
  16. java实现圆环进度条,环形进度条(动态显示运动步数)
  17. vpu测试_联发科P30支持的VPU是什么?不知道就别说你懂科技了
  18. java方法和数组的概念及法
  19. python数据类型(下)
  20. 『原创』ewebeditor 2.1.6 上传漏洞利用工具

热门文章

  1. SD卡FAT32文件系统格式
  2. Spring @Transactional (一)
  3. LA3602DNA序列
  4. 【数字信号处理】序列傅里叶变换 ( 基本序列的傅里叶变换 | e^jωn 的傅里叶变换 )
  5. 【C 语言】文件操作 ( 文件加密解密 | 加密解密原理 | 对称加密原理 | 非密钥整数倍长度的数据加密处理 )
  6. 【Android 逆向】Android 系统文件分析 ( /system/ 系统命令和系统应用数据目录 | /system/app/ 系统应用目录 | sys Linux 系统内核文件目录 )
  7. 【Netty】IO 模型简介 ( Netty 特点 | Netty 应用场景 | Java 三种 IO 模型 | BIO 模型 )
  8. matplotlib模块学习
  9. 前后端数据交互的几个方法
  10. BZOJ-1045 糖果传递 数学+递推