使用WebSphere Application Server执行性能测试和分析4

Self

A graphical representation of the Self (%) 列的一个图形表示。更宽、更红的条块表示更热的方法。

Tree (%)

特定方法在调用堆栈中任何地方时采用的抽样百分比。此值表示处理此方法和它调用方法(子孙)的时间百分比。此值很好地指出了您应用程序中花费了最多处理时间的区域。

Tree

Tree (%) 列的一个图形表示。更宽、更红的条块表示更热的方法堆栈。

Samples

在堆栈顶部运行特定方法时采用的抽样数量。

Method

该方法的完全限定的表示,包括了包名称、类名称、方法名称、参数和返回类型。

单击列标题,按升序或降序对所有这些列排序。理解这一点后,您可深入分析工作负载的性能特征。导航此表的一些有用技巧包括:

•    单击表中的一行将显示底部面板中显示执行该方法的完整调用路径。

•    在探查有效期间执行该方法时,将显示
Timeline
选项卡。这可能很有用,您无需关注配置文件中在之前(或许在升温期间)执行的某项功能,然后离开。

•    Filter methods
文本框对搜索特定类和过滤配置文件的剩余部分很有用。这仅应用于下钻您应用程序的详细信息,以删除所有其他非应用程序类。作为一个示例,图 15 显示了按 “daytrader” 过滤的配置文件,因为所有 DayTrader 应用程序类的包名称中都包含 “daytrader”。这使您能够集中精力查找应用程序中使用资源最多的方法。

 

15. DayTrader 过滤的 Method Profile 视图


如果应用程序有一个特定的方法使用了大量 CPU 周期,然后 Health Center 将它标记为 Analysis and Recommendations 面板中一个不错的优化候选者。一个示例如图 16 所示。

 

16. 优化候选者示例


可花几天时间分析 Method Profiling 视图,以查找一个应用程序的性能改进。因为输出可保存到一个文件中,所以对比应用程序更改非常简单。应用程序开发人员可执行一项通过 Health Center 挂钩来部署和执行负载测试的更改,并且您可对比以前的配置文件信息,查看开发人员更改的方法增加还是降低了处理需求。

 

 

锁定分析

多线程应用程序需要同步(或锁定)共享资源,以使资源的状态保持一致。这种一致性可确保在一个线程读取另一个线程时,该线程的状态不会更改。

当在具有大量处理器的系统上部署的高负载应用程序中使用锁时,锁定操作可预防应用程序使用所有可用的处理资源。想象一下一个在 8 核机器上运行的应用程序,它的主要应用程序代码路径高度同步,所以一次只能执行一个线程。这可能使其他 7 个线程处于等待状态。

当在大型的多核(4 个以上)机器上运行时,锁分析对确保应用程序可扩展并利用所有可用的硬件资源至关重要。(如果应用程序在单核机器上运行,这里的分析可能没有太大价值。)Locking 透视图分析锁的使用,帮助识别应用程序或 Java 运行中阻止应用程序扩展的争用点。单击 Locking 链接后,应会显示一个类似于图 17 的面板。

 

17. Health Center – Locking 视图


初看起来,Moniors 视图可能很难使用和理解。但是,Health Center 文档详细描述了这个面板,以帮助您理解这些指标。表 2 描述了该表中的列的内容。

 

2. 监视器

描述

% miss

Get 或获取次数的一个百分比,对于这部分 Get 或获取,尝试在同步的代码上获取该锁的线程在获取锁之前必须阻塞。

Gets

在充实期间,获取该锁的总次数。

Slow

由于一个锁已被另一个线程拥有,请求线程必须为其等待锁的非递归锁获取的总次数。

Recursive

递归获取的总次数。当请求线程已拥有监视器时,就会发生递归获取。

% util

持有该锁的时间量除以接管输出的时间量。

Average hold time

一个线程持有或拥有该锁的平均时间量。例如,同步的锁中花费的时间量(以处理器时钟单位计算)。

Name

监视器名称。如果不知道名称,则此列为空。

该表列出了被充实的每个 Java 监视器。% miss 列是最初的关注点。高 % miss 表明受锁保护的同步化资源上发生了频繁的争用。这种争用可能阻止 Java 应用程序进一步扩展。

如果一个锁具有一个较高的 % miss 值,请查看 Average hold time % util。一些技巧如下:

•    如果 % util Average hold time 都很高,您可能需要减少在持有锁期间执行的工作量。

•    如果 % util 很高,但 Average hold time 很低,您可能需要使受锁保护的资源更加细粒度地将该锁分离为多个锁。

 

 

结束语

没有正确的工具和知识,开始执行性能测试和分析最初可能会很难。但是,本文表明,用户可以执行一些较简单的步骤来确保执行正确的性能测试,并确保应用程序瓶颈已消除,从而尽可能高效地执行应用程序。

即使 DayTrader 可能与您的应用程序不同,但本文中描述的测试性能和识别瓶颈的方法所发挥的作用是相同的。对较慢时期的小用户负载一直到峰值使用时期的高用户负载执行测试,这对理解您应用程序的特征至关重要。记录一些关键指标,用它们来对比应用程序或环境更改,这对理解性能降级的可能根源至关重要。最后,IBM Health Center 工具通过垃圾收集、方法探查和锁探查视图简化了性能分析,帮助您确保尽可能高效地执行应用程序。

以下文章点击率最高

Loading…

     

如果这文章对你有帮助,请扫左上角微信支付-支付宝,给于打赏,以助博客运营

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注