一、《图解性能分析》学习小结
1性能的基础知识
tips:和数据库交互时,应用程序考虑DBMS结合优化。
2性能分析的基础
性能问题的处理和性能调优从正确的测量开始。
2.2 性能信息
分段查找的原则
性能信息的三种类型:概要(总的、平均的)、事件记录(所有瞬时)、快照形式(某一时刻)
不同的类型有不同的使用场景。
排队理论与平均等待时间。(注意核数比较少的情况下CPU使用率和等待队列)
产品中:1.能否获得合适的信息?
2.定期确认性能?运维时有问题能够咨询开发方。
2.4 OS命令
命令的名称
性能信息的种类
在哪里测量(可以分段查找哪里的信息)
能知道的信息、不能知道的信息
一起使用更有效果的性能信息
常用命令:TODO
3 Web/AP服务器
在不同的地方观察不同的指示器:比如在Web服务器上监控访问日志->在AP服务器的OS上查看vmstat->在JavaVM监控profile
4 性能调优
可以使用的技巧:
省略循环
访问频率高的数据存放在散列表中
访问频率高的放在使用位置附近
同步改成异步
负载均衡器
LRU算法(least recently used):丢弃最近没有使用的数据
分割处理或者细化锁的粒度
使用多层缓存
使用巨帧和高速网络
关联性、绑定、粘滞会话
写时复制
研究cache miss相关原理及解决办法(待学习)
两个进程串行完成一个流程,如果一个进程遇到瓶颈,可以将部分处理流程分给另一个流程处理
5 性能测试
5.1 性能测试的概要
5.1.1 项目工程中的性能测试
整个项目生命周期内,有很多环境都需要考虑性能测试相关的任务
5.1.2不同职责的性能测试相关人员
从项目经理到基础设施设计负责人到应用程序设计负责人及性能测试负责人均需考虑性能
5.2 常见的失败情况:
A不能在期限内完成:
后期工程才暴露性能问题的原因:
只有在生成环境中才出现
问题的显现需要很多条件
因为特定的操作才导致性能问题
B性能就是差!但是解决不了
原因:开发能力不足(占用CPU的程序、内存消耗大、性能差的SQL)、管理流程不正常(开发过程中不能把握性能状况,发生问题时难以解释)、人才不足
C没有考虑到环境差异而导致的发生问题
开发环境和实际环境的硬件差异等
D压力场景设计不完备导致发生问题
实际使用场景更复杂的使用,而测试场景过于单一简单
F没有考虑到缓冲、缓存的使用而发生的问题
页面测试中常见、定位中类似同UE反复和不同UE
G没有考虑到思考时间而导致发生问题
真实使用页面和测试对页面的点击处理不同
H报告内容难以理解导致客户不能认同
客户关心的焦点在:实际环境中运行是否会有性能方面的问题
I客户因为存在不信任感到不能认同
比如反复调优但没有结论等。
沟通、共享性能测试的整体过程
J测试很花时间
搭建与生产环境一样的结构
生成用于产生负载的环境与路径
设置用于性能测试的资源统计监控
负载生成场景的脚本的生成
生成用于性能测试的模拟数据
性能测试的实施周期
评价结果
排查瓶颈
生成结果报告
制作性能测试计划、调整工作分配
5.3性能测试的种类
A狭义的性能测试
B临界测试(临界性能、回退性能、故障测试)
C基础设施性能测试(DB AP等)
目的:防止在后面的系统测试阶段中 基础设施出现性能问题导致返工或计划变更。设计穿刺。
D应用程序单元性能测试
E耐久测试(拷机测试):长时间运行,系统的变化,内存、CPU、磁盘等
5.4 项目工程中考虑的性能测试
5.4.1需求定义
吞吐、响应时间、用户并发度
指标的计算
在RFI(request for information)和RFP(request for proposal)中明确性能需求定义。
性能目标定义时的考虑事项
5.4.2项目规划
必要的工程与人员
5.4.3【基本设计】选择系统
确认是否有性能测量功能
5.4.4【基本设计】性能测试环境
5.4.5【基本设计】其他与性能设计相关的事项
设计时考虑:
可以从外部获取当前队列中滞留的请求数和线程使用数
有可以计算重要处理所需时间的机制
能获得各个应用逻辑所需要时间的平均值、最大值、最小值
外部交互时能记录方便排错
在日志中记录个处理所需时间
制作测试计划:
5.4.6【性能测试设计】测试计划的细节
5.4.7【性能测试设计】人员配备与联络体系
5.4.8【基础设施集成测试】基础设施性能测试
基础设施性能的目标的定义
性能评价体系的定义
性能测量手段的设置
性能测量
5.4.9【集成测试】多并发运行测试
5.4.10【系统测试】压力测试、临界测试、耐久测试
5.4.11【运维测试】性能监控测试、故障测试
5.4.12【交付】
5.4.13【运维】
5.5性能测试的课题与必要的技巧
5.5.1性能预估的能力
必须定义合适的性能需求:比如响应时间、用户数、吞吐、回退服从率
5.5.2高效的反复实施能力
分析瓶颈、调优、报告与审核、再次测试所需的时间
5.5.3工具的使用效果
Oracle ATS使用的例子