对性能问题进行故障诊断

本主题说明性能问题解决过程需要反复地试验,此外,本主题还说明了如何对性能问题进行故障诊断。

[AIX Solaris HP-UX Linux Windows]

准备工作

建议您先查看调整参数活动表页面,然后再阅读本主题。

有关此任务

在解决性能问题时,通常需要反复执行以下操作:

消除一个瓶颈后,性能可能会受系统某些其他部分影响,因此性能问题的解决过程通常需要反复地试验。 例如,在将低速硬盘更换为高速硬盘后,系统的 CPU 可能会成为瓶颈。

测量系统性能并收集性能数据

  • 首先选择基准程序,这是要运行的一组标准操作。 此基准程序对遇到性能问题的那些应用程序功能进行测试。 复杂的系统通常需要经过一个预备阶段,以执行对象高速缓存和代码路径优化等操作。 在预备阶段,系统性能通常远低于预备阶段完成后的情况。 基准程序必须能够生成一些工作来使系统进行准备,系统在完成这些工作后才开始记录用于进行性能分析的度量值。 根据系统复杂程度的不同,预备阶段可以是只执行几千个事务,也可以是超过 30 分钟。
  • 如果所调查的性能问题仅在大量客户机使用系统时才会发生,那么基准程序还必须模拟多用户。 另一项关键要求是,基准程序必须能够生成可再现的结果。 如果两次运行所产生的结果之间的差别远不止几个百分点,那么请注意,每次运行基准程序时系统的初始状态可能会有所不同,或者度量值是在预备阶段获取的,或者系统正在运行其他工作负载。
  • 有多个工具可以帮助您开发基准程序。 这些工具既包括仅仅调用 URL 的工具,也包括能够与应用程序生成的动态数据进行交互的(基于脚本)产品。 IBM® Rational ® 具有可与受测试系统生成复杂交互并模拟数千个用户的工具。 生成有用的基准程序需要花费不少人工,但这是开发过程中不可或缺的一部分。 请不要等到应用程序进入生产模式时才确定性能的度量方式。
  • 基准程序以某一格式记录吞吐量和响应时间结果,从而允许使用制图和其他分析技术。 WebSphere® Application Server Performance Monitoring Infrastructure (PMI) 提供的性能数据有助于监视和调整应用程序服务器性能。 请参阅有关为何使用请求度量值的信息,以了解有关 WebSphere Application Server提供的性能数据的更多信息。 请求度量值允许在 WebSphere Application Server 组件边界处对请求进行计时,从而能够确定在每个主要组件中所花费的时间。

查找瓶颈

请查看下列情况和建议的解决方案:

  • 情况:只有一个用户,性能不佳。

    建议的解决方案:利用请求度量值来确定每个组件对整体响应时间的影响程度。 请参阅有关可以使用请求度量值收集的数据的信息,以更多地了解请求度量值。 将注意力放在影响程度最高的组件上。 使用 Tivoli Performance Viewer 来检查资源消耗(其中包括垃圾回收频率)。 您可能需要编码概要分析工具来识别问题以缩小到特定的方法。

  • 情况:仅当有多个用户时,性能不佳。

    建议的解决方案:进行检查,以确定是否有任何系统的 CPU、网络或磁盘使用率过高,然后解决那些问题。 对于集群配置,请检查集群成员之间的负载是否不均衡。

  • 情况:似乎没有任何系统的 CPU、内存、网络或磁盘使用率过高,但是,当有多个用户时,就会发生性能问题。
    建议的解决方案:
    • 检查工作是否到达待测试系统。 确保没有任何外部设备限制了到达该系统的工作量。 Tivoli ® Performance Viewer 可帮助确定系统中的请求数。
    • 线程转储表明瓶颈是由同步的方法引起的,或者是由于大量线程等待某个资源而引起的。
    • 确保有足够的线程可用于处理 IBM HTTP Server,数据库和应用程序服务器中的工作。 但是,线程过多会引起资源争用并降低吞吐量。
    • 使用 Tivoli Performance Viewer 或 Java™ 虚拟机的 verbosegc 选项来监视垃圾回收。 过度的垃圾回收会限制吞吐量。

消除瓶颈

考虑通过下列方法来消除瓶颈:
  • 降低需求
  • 增加资源
  • 改善工作负载的分布情况
  • 降低同步程度
可以通过几种方法来降低资源需求。 通过进行高速缓存,可以返回先前高速缓存的响应,而不必执行构造原始响应时所需完成的工作,从而大大降低系统资源使用率。 在下列系统中,有多个位置支持高速缓存:
  • IBM HTTP Server
  • 命令
  • 企业 Bean
  • 操作系统

通过进行应用程序代码概要分析,您能够确定可以进行优化的热点,从而降低 CPU 需求。 IBM Rational 和其他公司具有用于执行代码概要分析的工具。 对应用程序进行的分析可能会表明对某些类型的事务不必完成某些工作。

更改调整参数以增加某些资源的数量,例如文件句柄数,而其他资源可能要求更改硬件(例如使用更多或更快的 CPU)或添加应用程序服务器。 描述了每个主要 WebSphere Application Server 组件的关键调整参数,以帮助解决性能问题。 另外,“性能顾问程序”页面还可以提供有关在真实或模拟负载情况下调整生产系统的建议。

工作负载分布情况会影响性能。如果某些资源利用不足而其他资源负载过高,性能就会受影响。 WebSphere Application Server 工作负载管理功能提供了多种方法来确定工作的分发方式。 工作负载分布同时适用于单一服务器和那些包含多个服务器和节点的配置。

应用程序和服务器代码的某些关键部分要求进行同步,从而防止多个线程同时运行此代码并产生不正确的结果。 通过进行同步,可以确保结果正确。但是,如果有多个线程必须等待一个线程从关键部分退出,就会使吞吐量降低。 如果有多个线程等待进入关键部分,线程转储就会显示这些线程正在同一个过程中等待。 通常,可以通过下列方法来降低同步程度:将代码更改为仅在必要时才使用同步功能、缩短同步代码的路径长度或者降低同步代码的调用频率。