软件测试--性能分析调优
测试开发----性能分析调优
高并发系统设计要求:
高可用性,高可靠性,可扩展性,运维能力
常用手段
1.空间换时间
内存缓存,利用内存用磁盘上获取数据,CPU直接从内存中获取数据。
2.时间换空间
空间成为瓶颈时,切分数据分批次处理,用更少空间完成任务
例如:上传大附件
3.分而治之
把任务切分,分开执行,方便并行执行提高效率。
例如:Hadoop的MapReduce和HDFS的原理
4.异步处理
业务上有任务耗时长,可拆分业务以减少阻塞影响
常见异步处理机制有消息队列(MQ)
5.并行
用多个进程或多个线程来处理任务,缩短业务处理时间
6.离用户更近
CDN技术,把用户请求静态资源放在离用户更近的地方
7.一切可扩展
业务模块化, 服务化(同时无状态化),良好的水平扩展能力
性能分析方法
1.自底向上
通过监控硬件及操作系统性能指标(CPU、内存、磁盘、网络等硬件资源的性能指标)来分析性能问题(配置、程序)
2.自顶向下
通过生成负载来观察被测试的系统性能(响应时间、吞吐量)然后从请求起点由外及里一层层分析,从而找到性能问题所在
关键:生成负载、监控性能指标
单机性能调优
结构
web->app->DB
性能关注点
系统资源(CPU,内存,存储介质等)
系统负载(任务队列长度)
系统连接数
缓存
数据库(慢查询,大事务,DB time 高,I/O等待时间,置入内存)
中间件(Tomcat ,JVM等,线程池,DB连接池),可用netstat命令查看线程池和DB连接池的连接数
应用程序
一般采用分层开发,常见SSH架构就是MVC模型,其中View展现层负责展现内容,Controller负责请求接收,前台逻辑跳转,Model层实现业务逻辑,返回数据
性能问题多叔在程序逻辑混乱,调用复杂,甚至是设计不合理(低效程序或者相对低效程序)
WEB服务
1.页面size,动态数据,CSS,JS,图片等大小
2.隐藏的无用的数据传输;为开发方便集成的一些基类,需要考虑成本,最好避免生成大对象;SQL查询时排除无用字段,减少数据传输
优化方向
1.页面静态化,减少DB负担
2.减少页面size
3.图片变得更小
4.CSS合并
5.JS清减等
6.压缩页面,砍掉无用请求,无用数据传输
7.异步处理,先处理优先级较高的任务
8.智能DNS和CDN加速,让响应数据离用户更近,回避缓解网络瓶颈