写点什么

系统性分析性能问题与调优方法

2012 年 7 月 16 日

陈皓 ( @左耳朵耗子) 在酷壳分享了一篇有关性能调优的博文,系统性分析了有关系统性能条件、性能瓶颈问题定义与定位,以及性能调优方法经验。此前作者也曾分享过关于性能优化话题的两篇博文:

最近的这篇有关性能调优的博文中,作者首先提出“要进行优化,先得找到性能瓶颈!”。为了对于性能瓶颈有一致的认识,作者对系统性能的条件做了简单描述:

  1. Throughput ,吞吐量。也就是每秒钟可以处理的请求数,任务数。
  2. Latency, 系统延迟。也就是系统在处理一个请求或一个任务时的延迟。

这两个条件相互约束,他们的关系如陈皓所分享的:

  1. Throughput 越大,Latency 会越差。因为请求量过大,系统太繁忙,所以响应速度自然会低。
  2. Latency 越好,能支持的 Throughput 就会越高。因为 Latency 短说明处理速度快,于是就可以处理更多的请求。

陈皓对系统性能问题进行系统性介绍,分析了性能瓶颈的定义与定位,并分享了他的一些调优经验,文章主要从以下几个方面展开:

  • 系统性能测试的过程;
  • 定位系统性能瓶颈的方法;
  • 常见的系统性能调优的方法;

关于系统性能测试,作者提到首先要定义 Latency 的值,然后是开发测试工具,最后进入系统性能测试阶段。同时,作者也分享了一些性能测试的经验:要关注测试中 Latency 取值的分布情况、峰值极限、系统正常运行的负载极限。对于性能测试,作者总结”性能测试是一细活和累活”。

对于定位系统性能瓶颈,作者从两个方面进行介绍:

  • 查看操作系统负载:看 CPU 使用量,看 IO 大小,看网络带宽使用情况;
  • 利用性能测试工具 Profiler 测试,定位程序中的问题;

另外,作者提到:“对于性能测试,不同的 Throughput 会出现不同的测试结果,不同的测试数据也会有不同的测试结果。所以,用于性能测试的数据非常重要,性能测试中,我们需要观测试不同 Throughput 的结果。”

作者分享了自己的经验,首先介绍了性能调优的策略:

  • 用空间换时间;
  • 用时间换空间;
  • 简化代码;
  • 并行处理;

接着,作者系统总结分享了一些性能调优的方法,包括有:算法调优(过滤算法、哈希算法、分而治之和预处理)、代码调优(字符串操作、多线程调优、内存分配、异步操作、语言和代码库)、网络调优(TCP 调优、UDP 调优、网卡调优、其他网络性能)、系统性能(I/O 模型、多核 CPU 调优、文件系统调优)、数据库调优(数据库引擎调优、SQL 语句优化)。

陈皓在文章的最后提到撰文的初衷是由于 @淘宝褚霸强推的 highscalability.com 上的这篇文章: Big List Of 20 Common Bottlenecks ,大家也可以去了解一下。


给 InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2012 年 7 月 16 日 23:275429

评论

发布
暂无评论
发现更多内容

《微信小程序开发入门与实践》.pdf

田维常

智慧公安大数据分析研判系统开发,合成作战平台建设

WX13823153201

年终盘点 | 七年零故障支撑双11的消息中间件 RocketMQ,怎么做到的?

阿里巴巴中间件

消息中间件 双十一

构建一张音视频全球大网究竟需要多少个节点?Pano Backbone技术探秘

拍乐云Pano

音视频 RTC 实时音视频 音视频算法 拍乐云

看到Mybatis源码就感到烦躁,怎么办?

田维常

mybatis

LeetCode题解:433. 最小基因变化,BFS,JavaScript,详细注释

Lee Chen

算法 LeetCode 前端进阶训练营

TRONex波场智能合约系统开发详解丨TRONex波场链系统开发(源码)

系统开发咨询1357O98O718

系统开发 TRONex波场智能合约 APP开发

喜讯 | 拍乐云荣登2020「年度最具投资价值创新企业TOP20」榜单

拍乐云Pano

音视频 实时音视频 音视频算法 拍乐云

Java并发编程:多线程并发内存模型

码农架构

Java并发

ETH场外交易系统开发流程丨ETH场外交易开发源码案例

系统开发咨询1357O98O718

ETH场外交易系统开发

第12周作业

饭桶

公安大数据分析系统开发,情报研判系统搭建

t13823115967

智慧公安

智天下APP系统开发|智天下软件开发

开發I852946OIIO

系统开发

架构师训练营 12 周作业

郎哲158

区块链钱包系统开发方案丨多币种钱包系统开发详情

系统开发咨询1357O98O718

区块链钱包开发

OKO疯矿链系统开发案例(源码)

系统开发咨询1357O98O718

OKO疯矿链系统开发

Forsage系统开发(模式分析)

系统开发咨询1357O98O718

Forsage系统开发案例介绍

如何降低微服务测试成本?我的经验之谈

阿里巴巴中间件

BMEX交易所系统软件开发|BMEX交易所APP开发

开發I852946OIIO

系统开发

有道逻辑英语-时态新发现笔记

Leo

学习 前端进阶训练营 笔记 时态

三金本体挖矿模式系统开发丨三金本体平台源码设计

系统开发咨询1357O98O718

三金本体挖矿模式源码

使用Angular8和百度地图api开发《旅游清单》

徐小夕

Java angular.js 前端 angular

vivo 全球商城:从 0 到 1 代销业务的融合之路

vivo互联网技术

架构 分布式 商城项目 商城

第12周总结

饭桶

Learun FrameWork,.Net Core3.1工作流引擎平台

力软.net/java开发平台

.net core 工作流引擎

深入浅出理解视频编解码技术

拍乐云Pano

音视频 RTC 拍乐云 视频编解码 视频算法

投行工作的本质 | 读《投行职业进阶指南:从新手到合伙人》

邓瑞恒Ryan

读书笔记 投资 金融 投行 职业第二曲线

架构师训练营 12 周笔记

郎哲158

5分钟完成业务实时监控系统搭建,是一种什么样的体验?

阿里巴巴中间件

体验 监控

产品推荐 | 还在自研?快来解锁拍乐云互动白板

拍乐云Pano

音视频 在线教育 RTC 互动白板

COMP矿池矿机系统开发案例分析

系统开发咨询1357O98O718

COMP矿池矿机系统开发介绍

演讲经验交流会|ArchSummit 上海站

演讲经验交流会|ArchSummit 上海站

系统性分析性能问题与调优方法-InfoQ