2.6 性能优化的概念
性能优化是一个技术含量非常高的话题,对于初次接触AIX的朋友,还难以掌握此技术,但我们可以先了解一下如何发现性能问题,以及性能问题的产生原因。发现性能问题需要对系统了如指掌,最重要的一个概念是拿数据而不是拿感觉说话。复杂系统的性能优化需要经过如下步骤:
(1)简要查看系统,确定性能优化方向,制定数据收集方案;
(2)通过数据收集全部端到端数据及尽可能多的中间数据。由于很多数据收集过程会对原有系统造成干扰,因此中间数据的收集可能会根据系统优化的进程逐步深入;
(3)分析数据,判断瓶颈点,收集重点数据;
(4)根据数据资料制订优化方案和实施步骤及回退方案;
(5)实施优化方案,注意比较实施前后性能数据差异;
(6)反复实施从2~5的过程,直到系统实现满意的性能指标或者已经无法再提高。
对于简单的系统,就没有必要以这么刻板地顺序执行以上步骤了,此时工具、经验是最重要的优化手段。常用的工具包括AIX操作系统提供的:vmstat,iostat,lvmstat,topas。通常优化的顺序是先看CPU是否繁忙,再看内存,然后是磁盘和网络(IO)。优化的方法如下:
● 检查是否有故障
不要急于去进行优化,特别是系统性能忽然下降,大部分原因都是由于系统故障,将故障解决掉,性能问题也随之解决了。比较常见的有RAID磁盘组中出现坏盘,某颗CPU故障被系统自动关闭等。
● 打开限制
这是最容易实现的优化方式,不过除非是没有经过很好地设计和实施的系统,这种好事情很难碰到。最常见的限制在/etc/security/limits文件对于打开文件数、程序使用堆栈段等限制,可以简单地改为-1变成无限(如果是系统进程,需要重新启动才生效)。
● 降低使用需求
遇到性能问题的最简单解决办法是别这么“疯狂”地用系统!为什么要同时处理这么多的数据?能不能把时间分散开?只要系统使用量降下来,性能自然好。有很多应用程序在编写的时候风格不好,不注意对资源释放,或者有大量的死循环,这一类程序会很快消耗掉系统的CPU资源,如果我们并不是非常迫切地要求计算结果,可以适当限制这些程序对CPU的占用,这样可以释放出一些计算资源用于处理其他的事务。这种情况在一台计算机同时运行多种业务的时候比较常见,例如数据库既有OLTP(在线交易,需要及时响应),又有BI(数据挖掘,报表、统计,需要大量计算)两种应用同时工作。此时就需要按照优先级,例如限制报表统计时间,将其调度到夜晚执行。如果是OLAP(在线数据分析),业务要求即时计算,可以考虑通过限制并行操作数量、设定优先级别、预先计算等方式规避瞬间业务高峰。
● 平衡,分散需求
小型机的性能指标都是按照最佳负载平衡的情况下测算的,如果你发现系统没有达到理论值,并且相差很远,那么下面要做的优化工作就是能够尽量平衡系统对资源的使用,充分发挥设备的处理能力。马车的速度不是由跑得最快的马决定的,而是由最慢的马决定的。
● 转移需求
当仍然无法达到要求的时候,先要看看系统是否还有继续优化的余地,优化是为了挖掘系统的剩余能力,并不能提高系统的设计最大能力,但在另一种情况下,可能需要与平衡策略相悖,反其道而行之,不是让系统使用更为平衡,而是让系统更加极端化,这通常是在应用程序本身就不是均衡使用系统资源(通常应用程序都是如此)的时候采用的办法。例如,如果有大量磁盘IO,可以用剩余的内存设置虚拟磁盘替代物理磁盘,将IO需求转化为内存需求。