系统性能调优(1)步骤与思路

概念(来自度娘)

系统优化原来是系统科学(系统论)的术语,现在常用作计算机方面的术语。它尽可能减少计算机执行的进程,更改工作模式,删除不必要的中断让机器运行更有效,优化文件位置使数据读写更快,空出更多的系统资源供用户支配,以及减少不必要的系统加载项及自动启动项。当然优化到一定程度可能略微影响系统稳定性,但基本对硬件无害。

系统优化的一般步骤分为五步,不同的公司可能会省略其中的部分文档,但是大体的思路是一致的。

1、发现问题

一般性能的问题无非是系统工作效率低下,最常见的就是对数据库的CRUD操作缓慢、导出数据无响应等。有了问题我们应该精准的定位问题,尽可能的将问题的描述量化。在这里可以借助相应的工具进行一些性能测试,得到了详细的测试报告就可以为下一步的分析优化做好铺垫。

工欲善其事必先利其器,下面介绍几个比较有用的工具,篇幅有限具体的用法读者可以自己去度娘。

HttpwatchIE插件,用来查看在浏览器中操作的详细情况。下图为Httpwatch某个查询的耗时记录:

JavaVisualVMJava自带资源分析工具。下图为Java VisualVm记录某段循环的截图

LoadRunner:强大的压力测试工具,通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题。

根据得到性能测试结果要写一份性能测试报告为下一步工作提供依据,写性能测试报告一般有以下几点需要注意:

a) 测试使用数据是否为现场数据

b) 测试使用的客户端是什么配置

c) 服务器数据库端的配置

d) 选择的测试条件

e) 每个功能测试次数,平均耗时为多少

f) 每次查询返回的数据量

g) 数据库里对应表里的数据总量

h) 将测试记录写成文档,对于不达标的记录高亮显示

2、分析问题

根据上面得到的测试报告找到系统性能瓶颈的位置,然后从外向里添加日志,打印出各方法的执行时间,这样便很快就能找到问题的具体位置。将分析结果写入文档,为下一步提供依据。

切记:优化一定要对系统进行深入分析,找到性能问题根源切入点,而不被表象迷糊,对症下药。例如我们发现内存高了,首先想到不应该是扩大内存,而是为什么如此消耗内存,用工具(Java VisualVM)看看内存消耗在什么地方,想办法解决。

3、提出方案

根据分析结果提出合理的解决方案,然后写成文档提交审批。这里特别要注意的是解决方案的合理性,换句话说就是一定要考虑优化的成本。

从成本上面考虑大致的顺序如下。

数据库 ----> 应用层 ----> Web ----> 硬件

当然具体问题还需要具体分析(在后面的文章中将详细介绍更层次的优化方法)。一般来说在数据库上建立索引、分区等操作要比在应用层重构算法来的省时省力;应用层和Web层基本上是一致的,但和硬件比起来在软件层次的优化还是第一位的。就像上面说的,内存不够用了不应该去考虑换机器、加内存,而是找到内存开销大的地方,解决之。

4、解决问题

最后根据审批通过的文档进行修改,然后记录测试修改后的结果,符合性能指标后就可以提交到测试部门等待最后的总测试。

在这里要强调的是性能瓶颈都是相对的,也就是说的一处瓶颈消失了,系统一旦压力增大后,在其他地方又发现新的性能瓶颈。所以说性能优化是一个迭代的过程,需要逐步的去解决问题,直至满足系统需要。

5、结果报告

优化完成测试通过后一个优化就算结束了,为了后期有什么问题可以查看文档进行回溯,也为以后的优化提供现成的解决方案,要将优化过程中的文档上传保存。

原创文章,转载请注明出处:http://www.cnblogs.com/beijiguangyong/
原文地址:https://www.cnblogs.com/beijiguangyong/p/3111133.html