速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

使用 Perf4j 简化应用分析

  • 2009-02-20
  • 本文字数:1113 字

    阅读完需:约 4 分钟

Perf4J 提供的很多特性都令人耳目一新:

  • 用于计时的简单的停止观测(stop watch)机制。
  • 用于解析日志文件的命令行工具,可以生成聚合统计和性能图表
  • 轻松集成大多数常见的日志框架和门面:log4j、java.util.logging、Apache Commons Logging 及 SLF4J。
  • 客户化的 log4j appenders,可以在应用运行时生成统计和图表(不久还会提供客户化的 java.util.logging 处理器)。
  • 可以将性能统计暴露为 JMX 属性,当统计超出指定极限时发送通知。
  • 用于展现 Web 应用性能图表的 Servlet。
  • 提供了 @Profiled 注解和一套客户化的方面(aspect),在处理 AOP 框架如 AspectJ 或 Spring AOP 时可以灵活插入计时语句。
  • 可扩展的架构

InfoQ 有幸采访了 Perf4j 项目的领导者 Alex Devine,他谈到了开发 Perf4j 的缘由:

在认识到性能跟踪和管理问题会严重影响到公司的每个项目(事实上会影响到几乎所有的基于服务器的、分布式应用)后,我们决定构建并开发一个标准的性能库,最后就诞生了 Perf4J。

“Perf4j 能解决哪些特殊的性能问题呢”?

Perf4J 非常适合于分布式、面向服务的应用的性能问题跟踪。例如,用户点击 Homeaway 上的某个搜索页面后就会发出对 Web 服务器的一个调用,该 Web 服务器又会调用数据库,同时还会通过 HTTP 调用搜索服务和广告服务器。搜索服务本身会将各个搜索结点生成的结果聚合起来。如果在产品环境下性能出现了问题,我们可以通过 Perf4j 轻松快速的查明出问题的组件。

这导致了另一个问题“Perf4j 可以用在产品环境中么?”

Perf4J 明确定位于产品环境中。事实上,很多时候在每个阶段上一切都很好,但放到了产品环境下就会出现各种问题,在出现大的性能问题前就提早做好准备对于问题的跟踪是大有裨益的。

对于性能开销,Alex 说到:

其开销与日志类似,就像在代码前后使用 System.currentTimeMillis() 并记录日志一样,你可以在通过开始和停止 StopWatch 来实现这一切。这样类似于日志,其花费最终取决于附加的 appenders。AsyncCoalescingStatisticsAppender 仅是将日志消息压入到队列中并由单独线程中 downstread appenders 的取出,这样当这些 appenders 完成处理后不会影响到主线程的执行时间。此外,如果通过加载时间(load-time)来使用 @Profiled 注解,你可以定义运行中所分析的方法,在这种情况下,那些不做分析的方法就无需任何额外的设置。

关于未来 Alex 说到:

我们想对那些没有 StopWatch 或 @Profiled 注解的方法也进行运行时分析。也就是说开发者可以在 aop.xml 或 Spring 配置文件中指定要分析的方法。这样就可以分析第三方库(他们并不知道 Perf4J),而且无需在源代码中使用分析语句了。

可以从 http://perf4j.org 下载 Perf4j。

查看英文原文: Profiling Just Got Easier With Perf4j

2009-02-20 20:012966
用户头像

发布了 88 篇内容, 共 263.0 次阅读, 收获喜欢 8 次。

关注

评论

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

某挂号平台在线挂号用例

Geek_lot02c

产品经理训练营

【LeetCode】最长湍流子数组

Albert

算法 LeetCode 2月春节不断更

4. 列表一学完,Python 会一半,滚雪球学 Python

梦想橡皮擦

python 爬虫 Python Monad 2月春节不断更

别困惑,不是你的错!90%的开发者把Clubhouse看成了Clickhouse

京东科技开发者

Clickhouse 社交 clubhouse

「春」写作平台春节精选话题

InfoQ写作社区官方

InfoQ 牛年特别策划

Web页面制作基础

我是哪吒

学习 程序员 面试 大前端 二月春节不断更

Elasticsearch Mapping

escray

elastic 七日更 死磕Elasticsearch 60天通过Elastic认证考试 2月春节不断更

有了这个算法,图像上文字擦除再也用不上PS了

华为云开发者联盟

深度学习 算法 GAN 文字擦除 图像

【史上最全】Hadoop 核心 - HDFS 分布式文件系统详解(上万字建议收藏)

五分钟学大数据

大数据 hadoop 2月春节不断更

架构进阶之路:复杂业务开发与领域驱动设计

程序员架构进阶

架构 方法论 七日更 28天写作 2月春节不断更

什么是SNMP

架构的变迁,从分层架构先聊起

华为云开发者联盟

架构 软件 分层架构 架构师 系统

产品 0 期 - 前三周大作业

Jxin

作业之用例

踏凌霄

MyBatis专栏 - 关联查询之一对一

小马哥

Java mybatis 七日更 二月春节不断更

自动驾驶“绝地求生”结束了,但深兰的造车故事才刚刚开始

脑极体

说说Golang goroutine并发那些事儿

华为云开发者联盟

线程 进程 并发 goroutines Go 语言

LeetCode题解:153. 寻找旋转排序数组中的最小值,二分查找,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

「新」春节新用户注册福利

InfoQ写作社区官方

InfoQ 牛年特别策划

每周总结(2月1日-2月7日)

Nydia

红信圈系统开发,红信圈APP开发

luluhulian

如何防止手机被盗刷

石云升

2月春节不断更 手机盗刷

话题讨论 | 程序员表白,不光需要“技术”,更需要勇气!

孙叫兽

程序员 话题讨论 情人节 表白

第一性原理

熊斌

学习 2月春节不断更

互联网医疗里,用户需要的是什么

卢嘉敏

需求 医疗 用户

当自动驾驶遇到5G,会擦出怎样的火花?这篇文章说明白了

华为云开发者联盟

人工智能 自动驾驶 AI 5G

这个技术把时间切开,让生命愈合

脑极体

填补国内空白!建信金科携手本源量子发布国内首批量子金融算法

金科优源汇

「快」2月春节不断更

InfoQ写作社区官方

InfoQ 牛年特别策划

面试官系列:讲几个分布式自增ID的方案?

后台技术汇

28天写作 2月春节不断更

我的2020年学习总结

兆熊

学习 总结

使用Perf4j简化应用分析_Java_Ian Roughley_InfoQ精选文章