基本调优策略和手段

     存在性能问题的系统,十之八九是由某一系统瓶颈导致的。只要找到该瓶颈,分析瓶颈的形成原因,对症下药i,使用合理的方法解决系统瓶颈,就能从根本上提升性能。所以,系统性能优化的最主要目的就是查找并解决性能瓶颈问题。但同时值得注意的是,性能优化往往会涉及对原有实现进行较大的修改,因此,很难保证这些修改不引入新的问题。所以,在性能优化前,需要对性能优化的目标,方法进行统筹的安排。

1.优化的一般步骤

     对软件系统进行优化,首先需要要有明确的性能目标,清楚地指出优化的对象和最终目的。其次,需要在目标平台上对软件进行测试,通过各种监控和统计工具,观测和确认当前系统是否已经达到相关目标,若已经达到,则没有必要再进行优化;若当前系统性能尚未达到优化目标,则需要查找当前的性能瓶颈。

    可能成为性能瓶颈的因素有很多,比如,磁盘IO,网络IO和cpu,内存等。当找到性能瓶颈,首先需要定位相关代码,确认是否在软件实现上存在问题或者优化的空间。如有,则进行代码优化,若已经没有代码的优化空间,则需要考虑进行JVM层,数据库层或者操作系统层的优化。甚至,可以考虑修改原有设计,或者提升硬件性能。

    当优化完成后,需要在目标平台上进行确认测试。若达到性能目标,则优化过程结束;若没有,则需要再次查找性能瓶颈,以此反复。

2.优化注意事项

    软件的性能优化虽然提升软件的性能,但是优化过程往往伴随着一些风险和弊端。比如,为了优化某一段代码的实现,就需要重写原有的算法,而这就可能引入新的bug。重新实现性的功能模块也意味着需要重新对其进行完整的功能测试,使优化前所做的测试工作变得毫无意义,而且优化后的代码和优化前的代码相比,可能会比较晦涩难懂,从一定程度上影响了系统的可维护性。因此,软件优化需要在软件功能,正确性和可维护性间取得平衡,而不应过分追求软件性能。

    在进行优化前,必须要有明确的已知问题和性能目标,决不是为了优化而优化。在动手前,必须知道自己要干什么。任何优化都是为了解决具体的软件问题,如果软件已经可以正常工作,在性能问题没有暴露前,只是凭着主观臆断对某些模块进行性能改进,从软件规范化开发的角度来说,是非常冒险的。因为修改后的新代码没有经过完整的测试,软件的质量就没有保障。而且,优化后的性能提升幅度可能也不足以让开发者如此耗尽心机。因此,对进行软件优化时,必须要进行慎重的评估。

ps:性能调优必须有明确的目标,不要为了调优而调优,如果当前程序并没有明显的性能问题,盲目地进行调优,其风险可能远大于收益。

posted on 2014-03-19 00:15  梦之秋泪  阅读(665)  评论(0编辑  收藏  举报