NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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))。

公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

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

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

关注

评论

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

NewSQL 在微众银行核心批量场景的应用

TiDB 社区干货传送门

实践案例

PD 分配 TS 的 QPS 上限揭密

TiDB 社区干货传送门

Flink + TiDB,体验实时数仓之美

TiDB 社区干货传送门

实践案例

SQL只是CRUD?

TiDB 社区干货传送门

TiDB 底层架构

几分钟读懂 TiDB HTAP

TiDB 社区干货传送门

常见问题排查之 -- DM 主键冲突的原因及排查思路

TiDB 社区干货传送门

TiKV 集群部署 注意事项

TiDB 社区干货传送门

TiDB at ZaloPay Infrastructure & Lesson Learned

TiDB 社区干货传送门

移动云基于 TiDB 实现 serverless 数据库服务

TiDB 社区干货传送门

【TiDB 最佳实践系列】乐观锁事务

TiDB 社区干货传送门

实践案例

从抓包发现并解决 Navicat 编辑 TiDB 视图报错的问题

TiDB 社区干货传送门

实践案例 TiDB 底层架构

TIDB 3.0.5 性能压测

TiDB 社区干货传送门

数据库架构选型

【TiDB 4.0 新 Feature 原理及实践】 Dashboard 触手体验

TiDB 社区干货传送门

如果你的 kubelet 运行在容器中,使用 local static provisioner 要注意一个问题

TiDB 社区干货传送门

TiDB 数据库开发规范

TiDB 社区干货传送门

【精选实践】TiDB 在马上消费金融核心账务系统归档及跑批业务下的实践

TiDB 社区干货传送门

实践案例

从内容角度看看TUG小伙伴都在关注些啥

TiDB 社区干货传送门

版本测评

TiDB 集群的可用性详解及 TiKV Label 规划

TiDB 社区干货传送门

TiDB 底层架构

TiDB 5.0 异步事务特性体验——基于X86和ARM混合部署架构

TiDB 社区干货传送门

【热门问题】关于近期签名过期的处理合集

TiDB 社区干货传送门

TiCDC 应用场景解析

TiDB 社区干货传送门

实践案例

【TiDB 最佳实践系列】HAProxy

TiDB 社区干货传送门

实践案例

tiup目录冲突检测不健全导致的节点被destroy问题以及解决

TiDB 社区干货传送门

日本大型移动支付软件 PayPay 的 TiDB 迁移实践

TiDB 社区干货传送门

AskTUG 论坛迁移实战:Discourse 从 PostgreSQL 到 MySQL 到 TiDB

TiDB 社区干货传送门

基于阿里云ECS部署的TiDB 2.1.14升级到4.0.0-rc实践

TiDB 社区干货传送门

管理与运维 安装 & 部署

【技术专题】如何做数据库选型?

TiDB 社区干货传送门

实践案例

Tiflash 尝鲜小案例

TiDB 社区干货传送门

管理与运维

【TiDB DevCon 2020】金融专题论坛演讲视频汇总

TiDB 社区干货传送门

招募体验官!构建实时数仓 - 当 TiDB 遇见 Pravega

TiDB 社区干货传送门

tidb开发规范

TiDB 社区干货传送门

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