1 街灯讹方法
用户随意选取自己熟悉的观测工具测量,相当于使用top(1)不是因为这么做有道理,而是因为不知道怎么使用其它的工具,可能找到的问题是真的问题,但未必是你想找的问题
2 随机变动
用户随机猜测问题可能存在的位置,然后做出改动知道问题消失eg 随意选择一个变量改动、朝着某个方向修改、测量性能、朝着另一个方向修改、测试性能(5性能优于3?保存修改,否则返回1),这样做存在的风险是生产高峰期可能会产生很严重的后果,要准备好回滚方案
3 Ad Hoc核对清单法
把所有该 考虑的因素写入一份清单,检查人员去覆盖所有的情况,一一排查
4 问题陈述法
1)是什么让你觉得产生了性能问题
2)系统之前运行的好吗
3)最近有什么改动?硬件、软件、负载 ?
4)问题可以复现?
5)问题会影响其它的程序吗
6)环境是大概什么样的 ? 使用了哪些硬件和软件?什么版本,什么配置
5 科学法:
问题 ? 假设--> 预测 --> 试验 --> 分析
不断的用结果去修正判断
6 工具法:列出所有可用工具及对于每个工具的可提供的有用指标,怎样阐释这些指标
7 USE方法,简言之就是对于所有的资源监测它的使用率,饱和度和错误
资源列表:CPU(插槽、核、硬件线程) 内存(DRAM) 网络接口(以太网端口) 存储设备(磁盘) 控制器(存储 网络) 互联(CPU、内存、IO)
8 工作负载特征归纳:
1) 负载是谁产生的?进程ID、用户ID、远端的IP地址 ?
2)负载为什么会被调用?代码路径、堆栈跟踪?
3)负载的特征是什么? IOPS、吞吐量、方向类型(读取?写入?)、包含变动(标准方差)如果有的话
4)负载是怎样随时间变化的?有日常模式?
9 向下挖掘分析:
1)查询多了数据库就开始变慢 ?
2)由于内存换页磁盘IO延时?
3)数据库内存使用变大 ?
4)分配器消耗的内存增多?
5)分配器存在内存碎片问题 ?
10 延时分析:
1)存在延时?Y
2)请求时间大量的花在哪里?CPU或者文件IO
3)不花在CPU上的时间花在哪里?文件系统IO
4)文件系统的IO是花在磁盘上还是锁竞争?磁盘IO
5)磁盘IO的主要时间是随机寻址的时间还是数据传输的时间? 数据传输
11 事件跟踪 tcpdump iosnoop iostat
12 基础线统计 先了解正常是什么
13 静态性能调整 系统空闲时检查
1)该组件是必须的?
2)配置是针对预期的工作负载设定的 ?
3)组件的自动配置是对预期的工作负载来说最优的?
4)有组件出现错误?是在降级状态?
14 缓存调优
从应用程序到磁盘会有多级缓存来提高IO性能
1)缓存的大小应尽量和栈的高度一样,靠近工作秩序的地方,减少命中缓存的资源开销
2)确认缓存开启并确实在工作
3)确认缓存命中率
4)若缓存大小是动态的,确认它的当前尺寸
5)针对工作负载调整缓存,这项工作以来缓存的可调整参数
6)针对缓存调整工作负载