性能侦探: 第 2 部分,防患于未然

避免系统瓶颈的实用步骤

本文是关于管理系统性能的由两部分组成的系列文章的第 2 部分,研究了如何预防性能问题。让您的系统保持良好的调整,就可以避免诸多压力。这里提供了一些步骤,在系统阻塞时,可以采用这些步骤来帮助您快速识别系统瓶颈,并了解在何处可以寻求帮助。

Anthony English, 高级 AIX 专家, Levitar Pty Ltd

http://www.ibm.com/developerworks/i/p-aenglish.jpgAnthony English 是来自澳大利亚悉尼市的一名独立承包人。他从 1991 年开始就一直在 AIX 系统上工作,他还撰写 IBM developerWorks 博客 AIX Down Under



2012 年 7 月 09 日

当系统运行的太慢时,您必须确定配置中的众多组件哪个可能是罪魁祸首。可能是磁盘 I/O 太慢,也可能是系统内存不足。是一个编写很差的应用程序造成的?还是一个失控进程造成的?似乎有一个适配器固件修复可以解决所有问题。

瓶颈可能是这些问题中的一个,也可能是它们的组合,或者是其他问题。当性能问题开始肆虐时,用户可能要承受巨大压力去修复它。如果采用一种具有前瞻性的方法来调优系统性能,则可以帮助您分担这种压力。制定远景规划和早期干预可以帮助您避免巨大的性能瓶颈。退后一步考虑系统期望是否适合工作负载也是很有价值的。

采用一种具有前瞻性的方法

这里有一些实践可以帮助您预防性能问题,至少在性能问题出现时可以帮助您做出快速响应。

记录配置

与能够理解和管理配置的人分享您的知识非常重要,最好的方法就是记录您的配置,特别注意那些使用非默认设置或者不遵守行业标准的方面。

IBM® Power Systems™ 服务器提供了许多工具,可以帮助您记录配置。例如,您可以使用命令(比如 prtconf)列出虚拟机的配置,如 清单 1 所示。

清单 1. prtconf 命令显示系统配置
# prtconf

System Model: IBM,9117-MMA
Machine Serial Number: 01A02B3
Processor Type: PowerPC_POWER6
Processor Implementation Mode: POWER 6
Processor Version: PV_6_Compat
Number Of Processors: 2
Processor Clock Speed: 4208 MHz
CPU Type: 64-bit
Kernel Type: 64-bit
LPAR Info: 4 A3_everest-nim
Memory Size: 8192 MB
Good Memory Size: 8192 MB
Platform Firmware level: EM350_108
Firmware Version: IBM,EM350_108

文档应当包括磁盘配置、环境变量、操作系统可调设置、设备属性、应用程序版本、系统模型、类型和序列号。如果系统性能比较糟糕,您可能需要请求技术支持,这有助于您不费吹灰之力就可获取系统的详细信息。

使用变更管理程序

有了适当的变更管理,就可以对即将做出变更的其他利益相关者进行警示,提供变更的循序渐进的详细信息,准备切实可行的的回滚计划。

实现推荐的调优设置

通过实现推荐的调优参数,可以更好地利用现有硬件,在开始构建之前缓解资源压力。

即使有一个高性能的存储子系统,在操作系统级也可能会遇到 I/O 瓶颈,一个常见的例子就是当一个物理卷的 I/O 队列填满时。

清单 2 中的 iostat 命令显示这个物理卷的服务队列不能对其收到的服务请求作出响应。请参见队列值最后一列的 sqfull 值。这意味着其他 I/O 请求必须等待。

清单 2. iostat 显示了完整的队列
hdisk89        xfer:  %tm_act      bps      tps      bread      bwrtn
                        75.0     43.4M   336.5        6.1K      43.4M
               read:      rps  avgserv  minserv  maxserv   timeouts      fails
                         1.5    123.9     15.1      1.0S          0          0
              write:      wps  avgserv  minserv  maxserv   timeouts      fails
                       335.0     28.1      1.5    275.0           0          0
              queue:  avgtime  mintime  maxtime  avgwqsz    avgsqsz     sqfull
                        43.9      0.0    297.1      2.5        1.6     239.0

您可以使用 chdev 命令增加队列深度,如 清单 3 所示。

清单 3. 增加队列深度
chdev -l hdisk89 -a queue_depth=20

一步一步来

进行配置更改或者试图修复性能问题时,将更改分解成简单、可度量的步骤是很有帮助的。如果一次进行 3 项更改,可能问题修复了,但您不知道是哪个更改或者哪些更改组合最终解决了这个问题。

早期寻求帮助

没有理由独自处理性能问题。在实现一个主要配置更改之前,与曾经这样做过或者做过类似事情的人员商量一下。不要等到所有都出了问题时才寻求支持。

进行定期性能审查

即使您的系统运行良好,偶尔花费一点时间检查配置是否能够进行一些调整也是值得的。例如,可能有一些虚拟机,它们已不像从前那样重要了。它们仍然使用最优磁盘或者有太多处理器或内存分配?这些资源也许可以更好地为其他更有需要的虚拟机所用。

实现容量规划

快速增长的工作负载会令您大吃一惊,采取一些定期容量规划来查看是否需要额外资源。容量规划可以包括评估磁盘需求、处理器使用和内存使用情况。另外,也要时刻关注增长容量的 flow-on 效应。特别注意备份基础架构和灾难恢复需求。

定期容量规划可以预防意外的预算支出和新硬件应急安装。

避免单点解决方案

很多系统表现不佳是因为没有充分利用现有技术。例如,如果使用专用 I/O 适配器和磁盘的单点解决方案,则意味着这些资源不能被其他虚拟机共享。IBM PowerVM® 虚拟化有很多内置功能,可以帮助平衡波峰和波谷,而实现一个单点解决方案绕过它们是毫无意义。

保护日志文件

做最坏的准备是防止错误发生的最好方法。检查系统的错误报告和应用程序日志文件,易于定位且不会被覆盖,也不会因为删除过快而导致不能进行适当的分析。

捕获标准输出和错误消息是很有帮助的。要捕获标准输出,使用 1 > 并添加一个文件名,如 清单 4 所示。

清单 4. 捕获标准输出
# ./myscript.sh 1>myscript.out

同样重要的是,可以捕获标准错误消息。要做到这一点,将 2 重定向到一个文件,如 清单 5 所示。

清单 5. 捕获标准错误消息
# ./myscript.sh 2>myscript.err

您可以将标准输出和错误消息结合到一个文件,如 清单 6 所示。

清单 6. 在一个文件中捕获标准输出和错误消息
# ./myscript.sh > myscript.out 2>&1

安排定期的系统维护

只要有简单的预防性维护就可避免很多性能问题。系统或者设备固件发布时通常都包括性能增强。同样地,将一个定期维护窗口用于操作系统更新是有一定道理的。

建立一个基线

如果系统响应缓慢,您很有可能先从传闻中得知此事。这是一个很好的开始,如果有一些比较点则会更好。到底有多慢?与类似工作负载相比较如何呢?有一些关于报告和管理性能问题的框架是很重要的。而这些框架在需要使用之前 就应该建立。

针对问题的计划

除了前瞻性实践之外,当系统不能良好运行时,针对那些(希望很少)时间制定一个计划也是很不错的。计划应该包括以下条目,如 表 1 所示。

表 1. 出现问题时,您的计划应该包含的内容
条目原因
报告性能问题的进程用户可以轻松地描述和记录问题的症状
支持联系人方便了解可以联系谁,如何拨打外部支持团队的支持电话
变更记录提纲:
  • 什么发生了更改
  • 如何更改
  • 何时更改
  • 是否有效(或者可能更糟)
  • 如何扭转

系统突然开始运行缓慢时,时间至关重要。可能会损失惨重。制定该计划可以使您将精力集中在最需要的地方。


管理期望

当系统看似要慢慢停止时,最需要的是保持镇静。“浪费” 一点时间来评估到底发生了什么问题、受到了什么影响、以及如何才能最好地解决总是值得的。

预留时间诊断问题

花费一点额外的时间诊断出现的故障,后期可能会节省大量时间。您需要尽可能地做好发现问题的根源(或原因)的准备,准备好侦探的工具以备不时之需。捕获快照、错误报告、备份和系统转储准备得越充分,诊断和调优的进程就越快。

告诉心急如焚的用户您正在进行一些信息收集,这可能需要点勇气,但这个时间投资是值得的。这也就是管理用户期望。过高估计修复时间可能比承诺一个无法满足的最后期限要好一点。

即使不能查明问题根源,至少可以采取措施使问题再次发生时很容易解决。其中一些措施在文章 “Insufficient Evidence When Problems Occur” 中进行了概述(参阅 参考资料)。

工作负载期望

考虑一下系统本身期望的工作负载。这里有一些问题值得一问:

  • 系统没有被适当地配置吗?工作负载超出硬件容量了吗?
  • 正在运行的实际任务有必要吗?如果是,可以在系统压力较小的时候运行吗?
  • 有一个简单的、资源消耗较少的方法吗?例如,可以做一些增量备份代替完全备份吗?有一个在后期软件版本中可以修复的内存泄露吗?存在一些会给系统带来过多压力的无效报告或应用程序吗?

员工期望

正如期望系统进行超容量执行那样不切实际,期望不合适的人来解决性能问题更加不切实际。他们需要足够的训练、本地系统知识,以及休息时间。有许多性能问题本来可以得到快速解决,但是需要从事这项工作的人保持充足睡眠或没有过大的压力。

进行一次重要的更新或处理问题经常发生在凌晨甚至更晚是。如果整个夜晚只有一个人独自工作(通常是在完成一整天的工作之后),那么工作的成果必然不会很好。最好是分担工作量或者延长实现时间,安排间歇以便得到充足的休息。


保持控制

控制谁对系统做了什么。变更管理、明智的安全实践以及一个有潜在影响的同行评审,这些都是很重要的。

如果性能问题发生在关键系统上,那么您最需要的资源就是时间。对系统性能采用一个具有前瞻性的方法,可以为您分担痛苦和压力,或者至少可以最小化资源阻塞对系统的影响。

参考资料

学习

  • 参阅 IBM 的 AIX Version 7.1 Performance management 文档。
  • 阅读 “Insufficient Evidence When Problems Occur”(IBMSystems Magazine,2011 年 8 月)。了解系统发生灾难后时,如果不能找到可识别的问题根源需要做些什么。
  • Twitter 上关注我,并随时关注我的博客更新。
  • 关注 Twitter 上的 developerWorks
  • 观看 developerWorks 演示中心,那里提供了包括面向初学者的产品安装和设置演示,以及为经验丰富的开发人员提供的高级功能。
  • AIX and UNIX 专区:developerWorks 的“AIX and UNIX 专区”提供了大量与 AIX 系统管理的所有方面相关的信息,您可以利用它们来扩展自己的 UNIX 技能。
  • AIX and UNIX 新手入门:访问“AIX and UNIX 新手入门”页面可了解更多关于 AIX 和 UNIX 的内容。
  • AIX and UNIX 专题汇总:AIX and UNIX 专区已经为您推出了很多的技术专题,为您总结了很多热门的知识点。我们在后面还会继续推出很多相关的热门专题给您,为了方便您的访问,我们在这里为您把本专区的所有专题进行汇总,让您更方便的找到您需要的内容。
  • AIX and UNIX 下载中心:在这里你可以下载到可以运行在 AIX 或者是 UNIX 系统上的 IBM 服务器软件以及工具,让您可以提前免费试用他们的强大功能。
  • IBM Systems Magazine for AIX 中文版:本杂志的内容更加关注于趋势和企业级架构应用方面的内容,同时对于新兴的技术、产品、应用方式等也有很深入的探讨。IBM Systems Magazine 的内容都是由十分资深的业内人士撰写的,包括 IBM 的合作伙伴、IBM 的主机工程师以及高级管理人员。所以,从这些内容中,您可以了解到更高层次的应用理念,让您在选择和应用 IBM 系统时有一个更好的认识。

获得产品和技术

讨论

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=AIX and UNIX
ArticleID=824577
ArticleTitle=性能侦探: 第 2 部分,防患于未然
publish-date=07092012