写点什么

jClarity 发布 Censum 3.0

  • 2016-03-07
  • 本文字数:3873 字

    阅读完需:约 13 分钟

近日,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))。

2016-03-07 18:004687
用户头像

发布了 31 篇内容, 共 10.9 次阅读, 收获喜欢 0 次。

关注

评论

发布
暂无评论
发现更多内容

博睿数据赋能数字化转型,用户体验升级需要有“温度”的技术

博睿数据

【云计算】从事云计算运维可以考取哪些证书?

行云管家

云计算 阿里云 运维 华为云 云运维

软件测试工程师应该怎样规划自己

程序员阿沐

程序员 职业规划 软件测试 自动化测试 经验分享

【IM开源推荐】前微信技术专家打造的开源的即时通讯组件OpenIM

OpenIM

观测云品牌正式亮相,携手中国信通院共推国内可观测性概念与技术发展!

观测云

相约重庆,2021 DEMO CHINA创新中国峰会倒计时六天

创业邦

40 个 SpringBoot 常用注解:让生产力爆表

Java 面试 框架 Spring Boot 2

开源应用中心|这款小而强大的开源博客程序,简直让人爱不释手!

开源

等保三级多久测评一次?每年都要测评吗?

行云管家

网络安全 信息安全 等保

区块链是如何运作的、是如何防止被篡改的?

CECBC

花了3个小时解决了和异地女朋友一起看电影的需求(内附源码)

ZEGO即构

android 音视频 一起看电影

集齐海外主流云平台,EMQ X Cloud 正式支持 Google Cloud Platform 部署

EMQ映云科技

IoT Google Cloud AIOT 云 原生云 CTO

Alibaba iOS 工程架构腐化治理实践

阿里巴巴终端技术

ios 研发效能 客户端 架构治理

【OpenIM原创】IM服务端docker、源码、集群部署 非常实用

OpenIM

让全链路压测变得更简单!Takin2.0重磅来袭!

TakinTalks稳定性社区

北鲲云SaaS平台为生物制药研发进程带来“加速度”

北鲲云

Alibaba 80k Star《Java面试突击手册》(全彩版)开源

Java 程序员 架构 面试 计算机

重磅发布!百度飞桨获2021全球智博会产品金奖

百度大脑

人工智能

WorkPlus即时通讯软件,满足政企局域网办公需求

BeeWorks

【上汽零束SOA】云管端一体化SOA软件平台系列介绍之六:数字生态篇

SOA开发者平台

软件 SOA 生态 汽车 OTA

自动化驱动的高可用网络:爱奇艺B2网络流量自动调度系统建设实践

爱奇艺技术产品团队

流量

【Vuex 源码学习】第五篇 - Vuex 中 Mutations 和 Actions 的实现

Brave

源码 vuex 9月日更

2021智博会全国区块链大赛暨首届“星火杯”区块链应用大赛正式启动

云计算,

财经违规自媒体集体扑街,必须打击违规自媒体账号

石头IT视角

Javacv 音视频小工具 - 下载抖音视频

声网

Java 音视频 ffmpeg javacv

【上汽零束SOA】云管端一体化SOA软件平台系列介绍之六:数字生态篇

SOA开发者

自动驾驶 SOA 智能汽车 OTA

围绕低代码开发存在的三个误解

低代码小观

程序员 低代码 企业管理 低代码开发平台 应用开发

Android如何用代码执行shell命令

Changing Lin

9月日更

ONNX 浅析:如何加速深度学习算法工程化?

拍乐云Pano

人工智能 深度学习 音视频

使用分布式锁的正确姿势

张大彪

分布式锁

到底什么是区块链?是咋样的运营原理

CECBC

jClarity发布Censum 3.0_Java_Abraham Marín Pérez_InfoQ精选文章