性能调优, 你的力气用对地方了吗?

发表于:2015-7-23 12:48

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:Guanglei Li    来源:51Testing软件测试网采编

  做过性能调优的同学都知道, 最怕的不是性能差, 而是费了半天劲在细节上死抠, 却忽视了另外一整个对性能有巨大影响的维度, 旁边放着一西瓜却使劲在芝麻上雕花. 针对这种情况, << Performance Tuning: A Comprehensive Guide >>的作者梳理了影响性能的几个维度, 具备一定的完整性, 新手可以按图索骥的去调优, 老手也可以拿来参考看看是否漏掉了某些事半功倍的方法.
  这里谈到的性能是一种统称, 包含响应时间/延迟latency, 吞吐量throughput等, 也暂时不涉及压力测试负载测试等手段类似但意图不同的测试(它们之间的联系和区别可参考Restatement: 性能,容量,负载,以及压力测试)
  该体系将影响性能的因素分了三大类, 分别是
  · 算法本身,
  · 算法运行环境与所需资源,
  · 以及算法和环境资源的交互.
  这三类基本囊括了所有因素. 下面我们来看一下里面的细节.
  优化算法本身
  这通常是我们一头扎进去就开始局部优化的地方. 常用的手段包括使用各种 Profiler 来度量 CPU 时间, 内存占用率, 函数调用次数以进行问题定位, 然后实施各种调优方法, 比如优化循环, 空间换时间等.
  选择合适的数据结构自然算作此类优化, 而我们把不同存储模型等较大规模的优化也归为此类, 比如使用 Document 代替关系型存储等.
  这个方向的优化可以很快的帮助我们消除一些明显的编程细节引起的瓶颈, 但过了初期突飞猛进的阶段后, 每获得一点改善, 都需要付出巨大的智力上的努力, 事半功倍. 不要忘了我们还有另外的武器.
  优化运行环境与资源
  运行环境与资源包括各种软硬件平台: 操作系统, 数据库, 运行平台, CPU, 内存, 磁盘, 网络等等. 最简单, 最省事的调优方法其实是优化硬件资源, 使用快速计算资源代替慢速计算资源, 提升资源计算能力:
  · 更快的 CPU
  · 更快的本地 IO 设备: 内存代替硬盘, SSD 代替机械硬盘, 增加内存减少分页
  · 更快的网络 IO 设备: 光纤及专线增加网络带宽, 万兆千兆网卡代替千兆百兆网卡
  · 快速计算资源代替慢速计算资源不局限于同类资源, 比如快速存储代替慢速存储. 跨类型的资源优化也有很好的例子, 比如本地计算换网络传输: 压缩传输内容是一种常见的性能优化, 增加 CPU 压缩解压缩时间, 但可减少大量网络传输时间.
  而运行平台的软件部分, 比如操作系统, 数据库, 中间件等, 调优的成本要高一些, 并且有可能工作量大到不可接受. 比如从 Windows 平台迁移到 Linux 平台, 从数据库 A 切换到数据库 B, 从 EJB 切换到 Spring… 这些最好在初期就考虑好
  这类调优见效快, 但受制于预算, 及硬件本身的限制. 通常很快这类调优会在榨取最后一点计算资源后, 遇到瓶颈.
  而我们通常谈论的焦点, 也是当前各种调优实践最集中的领域, 是优化算法和资源间的交互, 包括:
  · 减少单台服务器(或单位计算资源)的处理量
  · 充分利用系统资源
  · 减少不必要的计算
  · 减少不必要的IO
21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号