如果想分析Java应用,有很多工具可供选择——但你想过分析应用可以像添加日志那么简单么?这就是Perf4j项目的目标所在:
如同log4j类似于System.out.println()一样,Perf4J类似于System.currentTimeMillis()。
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
分享到:
相关推荐
`perf4j-0.9.12-log4jonly.jar`则是针对只使用Log4J日志系统的精简版本,如果你的应用程序依赖其他日志框架,可能需要使用完整版的库。`devguide_files`可能是与开发者指南相关的辅助文件,如样式表、图片或其他资源...
总结起来,Perf4j与Logback的整合使得我们能够在不牺牲应用性能的情况下,收集并分析代码运行时的性能数据。这不仅可以帮助我们定位性能问题,还能持续优化代码,提升系统的整体性能。通过配置和使用Slf4...
通过集成各种日志框架,如 Log4J 和 Commons Logging,Perf4J 可以将性能数据记录到日志文件中,以便后续分析和优化。 1. **Perf4J 概要** - Perf4J 主要用于衡量代码执行的效率,通过使用 `StopWatch` 对象来追踪...
perf4j-0.9.16-log4jonly.jar
使用 Linux perf 分析应用程序性能 perf 是 Linux 中的一个性能分析工具,能够对应用程序的性能进行详细的分析。perf 由 Linux 社区维护,Intel 也为其贡献了代码。perf 的主要特点是抽象硬件,支持软件事件,可以...
本文主要探讨如何使用perf工具生成和分析火焰图,以及不同类型的火焰图适用于哪种场景。 1. **火焰图简介** 火焰图因其图形形状类似火焰而得名,它通过颜色编码的矩形格子来展示调用栈信息。每一列代表一个调用栈...
Google Perftools 的主要功能是通过采样方式对程序中的 CPU 使用情况进行“画像”,从而对程序中各个函数的调用关系和耗时情况进行分析。这种方式可以帮助开发者快速地找到程序中最耗时的部分,从而对其进行优化,以...
Linux系统中的perf是一款强大的性能分析工具,专为深入了解操作系统及应用程序的性能瓶颈而设计。它提供了丰富的命令行接口,能够帮助开发者和系统管理员对CPU周期消耗、指令执行、内存访问等进行深入剖析,从而优化...
之后,你可以随时通过`perf report -i perf.data`来查看这个文件中的数据,分析过程与之前直接使用`perf report`相同。 总的来说,通过Linux perf工具分析`alloc_page`的使用情况,我们可以获取到系统内存分配的...
性能统计日志和监控工具包扩展到 log4j、logback 和 java.util.logging 框架。 org.perf4j/perf4j/0.9.16/perf4j-0.9.16.jar
这个压缩包"seam-perf4j-0.5.0"是Seam Framework的一个扩展,旨在简化将Perf4j集成到Seam项目中的过程。 Perf4j提供了多种性能度量工具,包括计时器、日志记录和图形化日志分析器。它通过插入切面(AOP)来监控代码...
性能统计日志和监控工具包扩展到 log4j、logback 和 java.util.logging 框架。 org.perf4j/perf4j/0.9.14/perf4j-0.9.14.jar
性能统计日志和监控工具包扩展到 log4j、logback 和 java.util.logging 框架。 org.perf4j/perf4j/0.9.13/perf4j-0.9.13.jar
性能统计日志和监控工具包扩展到 log4j、logback 和 java.util.logging 框架。 org.perf4j/perf4j/0.9.12/perf4j-0.9.12.jar
cpp-nperf是一个专门为Linux系统设计的高性能CPU分析工具,它的设计理念与perf类似,旨在为开发者提供一种高效、便捷的方式来剖析和理解程序在运行时的性能表现。cpp-nperf这个名字暗示了它是用C++编写的,并且在...
性能统计日志和监控工具包扩展到 log4j、logback 和 java.util.logging 框架。 org.perf4j/perf4j/0.9.15/perf4j-0.9.15.jar
perf-tooling, 性能分析监视和优化工具列表 性能工具 欢迎使用高性能工具。性能工具是一个共享资源,用来跟踪新的和现有的性能工具。捐赠添加新工具你想添加一个工具? Great !创建一个问题,我们将把它添加到 perf...
2. **系统级分析**:perf可以对整个系统进行监控,包括内核、用户空间应用程序、硬件事件等。例如,可以查看哪些进程占用了最多的CPU时间,或者哪个硬件中断最频繁,帮助我们识别系统级别的性能问题。 3. **函数...
这些机制使perf能够对应用程序和内核的性能进行深入分析。 在硬件层面,了解cache、流水线、超标量、乱序执行和分支预测等概念对于性能优化至关重要。Cache的存在是为了弥补处理器和内存之间速度差异,提高数据访问...
性能统计日志和监控工具包扩展到 log4j、logback 和 java.util.logging 框架。 org.perf4j/perf4j/0.9.8.1/perf4j-0.9.8.1.jar