`

关于有效的性能调优的一些建议

    博客分类:
  • java
阅读更多
关于有效的性能调优的一些建议

只有采用有效的性能调优手段,才能使得性能调优达到事倍功半的效果。近日,
个人博客 Liguanglei 中发布了一篇关于有效性能调优建议的文章,该篇文章是作
者阅读《性能调优:综合指南》的读书笔记。作者从影响系统性能的算法、算法
运行环境与所需资源以及算法和环境资源的交互等因素讲述了性能调优的一些
建议。新手能够直接根据这些建议进行系统调优,老手也可以拿来当作调优的参
考。现对这些建议进行一个全面的梳理,以供读者参考和学习,具体内容如下。
1.算法本身的优化
算法优化是性能局部优化的首选, 并常采用各种性能监控软件来度量 CPU 时
间、内存占用率、函数调用次数以问题定位,然后实施各种调优方法,如优化循
环、利用空间换时间、采用合适的数据结构等。但是算法本身的优化只能够帮助
大家消除一些明显的编程细节引起的瓶颈,尤其单单通过算法优化的手段还不能
完全解决性能问题,且具有非常大的难度。
2.优化运行环境与资源
运行环境与资源包括各种软硬件平台,硬件环境包括 CPU、内存、磁盘以及网
络等。最简单且最省事的调优方法是优化硬件资源,使用快速计算资源代替慢速
计算资源,提升资源的计算能力。

优化硬件资源的方式包括:
 更快的 CPU;
 更快的本地 IO 设备,比如内存代替硬盘, SD 代替机械硬盘;
 加内存减少分页;
 快的网络 IO 设备,比如使用光纤及专线增加网络带宽,使用万兆千兆网卡
代替千兆百兆网卡。推荐文章 | Article
给 InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com。
快速计算资源代替慢速计算资源,比如快速存储代替慢速存储(属于同类型资
源);本地计算换网络传输的优化最好采用压缩传输内容的优化手段(属于不同
类型的资源),该方式尽管增加了 CPU 的压缩/解压时间,但减少了大量网络传
输时间
软件环境包括操作系统、数据库、中间件等。软件环境调优的成本要相对较高, 并
且工作量很大,如从 Windows 平台迁移到 Linux 平台、从数据库 A 切换到数据
库 B、从 EJB 切换到 Spring 等。这类调优见效快,但受制于预算和硬件本身的
限制。由于资源始终是有限的,随着资源的消耗,仍然存在性能瓶颈。

3.优化算法和资源间的交互
当前各种调优实践最集中的领域是优化算法和资源间的交互,如减少单台服务器
(或单位计算资源)的处理量、充分利用系统资源、减少不必要的计算、减少不必
要的 IO 等。
具体内容如下。
 减少单台服务器(或单位计算资源)的处理量
当在单台机器处理能力已达上限的情况,就需要把压力分散到多台机器上, 从而使每台机器都能获得可接受的延迟或吞吐量。总的优化原则是分而治
之,具体维度包括业务、组件边界、访问频率或对系统资源的消耗程度、瓶
颈资源等。
具体内容如下。
1. 业务:把大应用按业务分成独立的互相合作的系统,如高层的采用 SOA
方式,低层的采用数据库分库方式。
2. 组件边界: Web 服务器、应用服务器、数据库服务器、文件服务器。
3. 对系统资源的消耗程度:采用读写分离的方式。
4. 瓶颈资源: 对数据库进行分表、分片。
一旦按上述维度处理好了,大家还可以在所有维度上应用负载均衡,把访问量分
散到不同服务器。

 充分利用系统资源推荐文章 | Article
给 InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com。
采用多进程、多线程、异步操作以及负载均衡等手段,其中负载均衡主要做到
了防止某台服务器过满和防止某台服务器过闲。
 减少不必要的计算次数
缓存计算结果,尤其是服务端缓存,以减少不必要的计算。
 减少不必要的 IO 次数
 网络 IO 次数:客户端缓存、CDN 缓存、合并资源以减少请求次数。
 磁盘 IO 次数:缓存常用数据,如利用 Redis、Memcached 进行缓存。
最后,作者总结指出缓存是减少不必要计算和 IO 的重要手段,缓存的设计主要
是根据资源变化频率对资源进行分类,比如动静分离等;其前提是恰当的状态管
理、分离无状态的逻辑和有状态的逻辑,但会付出对一致性的一定妥协和运维的
复杂为代价。缓存的适用场景包括热点不均衡、有效时间不太短、一致性牺牲程
度可接受。作者还指出以上所有优化手段可以组合使用,有冲突时再做权衡。

作者还推荐了一些参阅文章:有关压力测试、负载测试的
《重述:性能、容量、
负载以及压力测试》http://blog.csdn.net/chelsea/article/details/5767530
《性能调优技术的几个角度》http://blog.csdn.net/chelsea/article/details/5767530。此外,有兴趣的读者还可
以参阅酷壳陈皓发表的一篇题为
《性能调优攻略》http://coolshell.cn/articles/7490.html的文章。
分享到:
评论
1 楼 lliiqiang 2015-04-22  
功能是关键,但是因为人的性能有限,所以性能也有可能是功能,

相关推荐

    Oracle性能调优

    Oracle性能调优 一、概述, 二、警告,跟踪文件,事件 三、监控工具和动态性能视图 四、优化SQL语句 五、优化共享内存 六、优化数据缓存 七、优化重做日志缓存 八、优化数据库结构和IO 九、有效使用数据块

    SQL 数据库性能调优方面的总结

    建立索引和编写高效的sql语句能有效避免低性能操作;通过锁的调优解决并发控制方面的性能问题。数据库调优技术可以在不同的数据库系统中使用,它不必纠缠于复杂的公式和规则,然而它需要对程序的应用、数据库管理系统...

    一种正规的性能调优方法:基于等待的调优

    性能调优曾经是“艺术性”多于“科学性”,但是通过结合抽象分析和尝试并产生错误,基于等待的调优方法已经证明能够使该过程更具科学性和更有效率。

    Mycat性能调优指南.docx

    一般来说:若CUR接近MAX,而PUT大于MAX很多,则表明MAX需要增大,HIT/ACCESS为...重新调整缓存的最大值以后,观测指标都会跟随变化,调整是否有效,主要观察缓存命中率是否在提升,PUT则下降。 具体详情请参与本资料。

    AIX系统调优指导书

    AIX下的系统调优,写的很详细. 性能调整的核心围绕着资源的利用,这些资源分别为物理的和逻辑的,物理的如:CPU、内存、输入输出设备(包括磁盘空间、磁盘读写臂、I/O总线、通讯线和各种卡等),逻辑的如:逻辑卷管理...

    Oracle数据库Sql性能调优

    1.6 选择最有效率的表名顺序(只在基于规则的优化器中有效) 6 1.7 WHERE子句中的连接顺序 6 1.8 SELECT子句中避免使用 ‘ *‘ 7 1.9 减少访问数据库的次数 7 1.10 使用DECODE函数来减少处理时间 8 1.11 删除重复记录 ...

    教你如何看懂nmon,如何进行性能调优

    介绍如何对linux进行调优,重点看那些参数,各个参数的含义

    专家调优秘密之改善Oracle数据库性能

    在过去的十年中,Oracle已经成为世界上最专业的数据库之一。对于IT专家来说,就是要确保利用Oracle的...关于调优可以写整整一本书,不过,为了改善Oracle数据库的性能,有一些基本的概念是每个Oracle DBA都应该遵从的。

    性能测试报告模板

    详尽的描述了性能测试报告如何写 对XX公司XX系统进行性能测试,客观、公正评估系统的性能现状。 1、开发正确有效的性能测试脚本,模拟最终用户操作行为,作为...如不满足,对性能瓶颈进行定位分析,提供性能调优建议。

    weblogic平台J2EE调优策略

    weblogic 调优策略,前 言 第一章 应用程序调优 1.1.1 通用代码调优 1.1.2 减小没有必要的操作 1.1.3 使用合适的类型 1.1.4 尽量使用pool,buffer和cache 1.2 JDBC代码调优 1.2.1 严格资源使用 ...关于作者

    软件测试技术的期末考试题

    关于软件测试基础技术的试题 以及软件工程师的面试题和试题

    Oracle数据库调优之-SQL执行计划粗解

    但是无论用什么办法调优,都必须要先读懂SQL的执行计划,了解应用程序的SQL的性能瓶颈在哪里,才可以进行有效的调优! 举个实际的应用场景,如果一条SQL平时执行的好好的,却有一天突然性能很差,如果排除了系统性能...

    SqlServer数据库性能优化详解

    为最有效地优化 Microsoft® SQL Server™ 2000 的性能,必须在极为多样化的情形中识别出会使性能提升最多的区域,并对这些区域集中分析。 虽然其它系统级性能问题(如内存、硬件等)也是研究对象,但经验表明从这些...

    性能测试规范及调优完全手册

    整个性能测试过程中,有效的性能测试需求分析才是整个性能测试过程中的重中之重。只有很好的完成了性能测试需求分析,才有可能去完整的对被测系统有一个很好的系统性能分析

    Linux性能及调优指南:内存架构

    在本节,我们将会讲述Linux的内存结构、地址分布和Linux如何有效地管理内存空间。  1.2.1 物理和虚拟内存  我们已经要面对选择32位和64位系统的问题。对于企业级客户的其中一个重要的不同是虚拟内存的地址是否能

    二十种实战调优MySQL性能优化的经验

    关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我们程序员需要去关注的事情。当我们去设计数据库表结构,对操作数据库时(尤其是查表时的SQL语句),我们都需要注意数据操作的性能。这里,我们不会讲过多的...

    WebLogic调优文档

    WebLogic8以上应用服务器的性能调优,涉及到各个线程数、虚拟机等参数的调优,对系统应用比较有效

    JVM详解及调优

    此配置仅对年轻代有效。即上述配置下,年轻代使用并发收集,而年老代仍旧使用串行收集 。可提高系统的吞吐量。 -XX:ParallelGCThreads 年轻代并行垃圾收集的前提下(对并发也有效果)的线程数,增加并行度,即:...

    性能测试诊断分析与优化

    结合笔者丰富的性能诊断调优经验,讲解如何有效分析和诊断性能问题、发现性能瓶颈。全书分为3篇,第1篇是性能测试基础篇,主要介绍性能测试的基础知识;第2篇是性能测试工具篇,主要介绍如何使用主流的性能测试工具...

    MySQL调优:从问题到解决的具体步骤和案例分析

    通过发现问题、分析原因、优化方案和实施优化,可以有效解决MySQL性能问题。程序员需要掌握MySQL的性能监控工具和调优技术,如Explain、索引优化、配置参数调整等。通过具体的案例分析,帮助程序员更好地理解MySQL...

Global site tag (gtag.js) - Google Analytics