性能优化 方法论
###术语
####IOPS Input/Output Operations Per Second 即每秒钟读写操作的次数。
####Throughput 吞吐量 单位时间内成功传送数据的数量。在有些场合(如数据库)吞吐量能表示出操作数量。。。。
####Response time 相应时间 操作完成需要的时间。包括等待时间,处理时间,传送时间。
####Latency 延迟 等待处理时间。在有些情况下可以等同于response time
####Utilization 利用率 资源的使用率
####Saturation 饱和度 资源正在被排队使用情况
####Bottleneck 瓶颈 限制系统性能的资源
####Workload 工作量 系统所要处理的操作量
####Cache 缓存 可以存放有限数据的存储
###概念
####Latency 延迟 在一些环境延迟是性能的唯一目标。在另外的环境中延迟和吞吐量并称为最重要的两个指标。
####时间尺度
####权衡 我们经常要在 good/fast/cheap 中选择两个做取舍。 一个常用的取舍是在CPU和内存之间。内存可以缓存数据来减少CPU使用率。在一个CPU资源丰富的系统中可以可以压缩数据来减少内存的使用。 可调参数一般是用来做权衡的。如:
####File system record size 小的,接近系统I/O大小的块大小在随机读写和应用缓存中表现良好。 大的块大小可以提高流负载.
####Network buffer size 小缓存可以减少每个连接所使用的内存大小。 大缓存可以提高系统吞吐量
###调优要素 由于在开发时我们没有太多的考虑性能问题,而是等到出现性能问题时,我们才去调优,所以越接近应用层我们的调优效果会更好。 下面是一张根据软件栈列出可调优对象
系统层 | 可调对象 |
---|---|
Application | 数据库查询 |
Database | 表结构,索引,缓存 |
System Calls | 内存映射,读写,同步/异步读写 |
File System | 记录大小,缓存大小,文件系统 |
Storage | RAID等级,磁盘类型数量,存储调优 |
###适当的程度 不同的团队对性能要求是不同的。这取决于投资回报率(ROI)
###时间点 我们的系统在不断的演进。昨天性能很好的资源在今天可能会成为瓶颈。所以调优建议可能只在某个时间点生效。在网上搜索到的调优参数可能只在某些情况下起作用。
###负载 VS 架构 系统会应为不好的架构或错误的配置导致性能不好。或仅仅是因为负载太高。
###伸缩性 系统在增加负载的情况下表现出来的性能就是系统的伸缩性.下图是一般情况下负载与吞吐量之间的关系。
###方法 系统性能分析一般有 负载分析(Workload analysis) 和 资源分析(Resource analysis) 这两种常用的方法。
####资源分析(Resource analysis) 资源分析是从分析系统的资源如:CPU、内存、存储、网络、总线等这些资源开始。系统管理员一般采用这种方法。 它包括: 性能问题检测。 性能规划。 这个方法主要关注资源利用率来检测是不是到达他们的极限。
####负载分析(Workload analysis) 主要分析的是在特定的负载下应用的响应情况
#####需要统计的指标有
> IOPS
> 吞吐量
> 利用率
> 饱和度
#####分析的指标有
> 请求:应用负载情况
> 延迟:应用相应情况
> 完成:应用出错情况
blog comments powered by Disqus