资源预览内容
第1页 / 共24页
第2页 / 共24页
第3页 / 共24页
第4页 / 共24页
第5页 / 共24页
第6页 / 共24页
第7页 / 共24页
第8页 / 共24页
第9页 / 共24页
第10页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
性能测试之问题定位分析主讲人:唐晓文培训大纲 性能测试基础知识回顾 性能测试加压各阶段 性能问题排查方法 性能测试常见问题 案例讲解:能耗监控系统 其他:性能测试思维误区 其他:性能测试工程师要具备的技能 说明:为方便解说此次培训所有例子均为单机web项目 http+java+Tomcat+Mysql结构知识回顾:Http请求浏览器一次请求的执行过程: 1、浏览器(查询DNS)解析出域名IP地址和端口号。N1 2、浏览器发起到该IP地址端口的连接,3次握手建立连接。N1 3、浏览器发送一条http报文到服务器端。N1 4、服务器端接收到报文后根据路径参数执行相应程序,程序连接数据库 获取数据,组装成响应报文内容,发送给浏览器。N2+N3+N4 5、浏览器获得服务器传回的响应报文加载展现。! 6、浏览器边加载边解析html页面文件请求获取其他资源。 7、服务器相应返回其他资源。 8、浏览器解析展现。 9、浏览器关闭连接。知识回顾:了解工具准确模拟场景 Jmeter的几个关键参数: 1)线程组的Ramp-up Period 2)Http采样器的Use KeepAlive 3)从HTML文件获取内含的资源 4)缓存HTTP Cache Manager 5)设置集合点Synchronizing Timer 6)定时器(思考时间) 7)参数化性能测试加压各阶段 一个正常的系统在不断加压的过程,应该经历下面几个阶段 : 第一阶段:并发用户逐渐增加,系统的TPS(每秒处理事务 笔数)逐步增大,直到达到最大值,这一阶段事务的响应时 间不会有太大变化,会非常稳定; 第二阶段:并发用户继续增加,TPS基本维持在最大值不变 ,但响应时间将会逐步变长。 第三阶段:并发用户继续增加,TPS将会有少量下降(20% 以内),但是决不能快速急剧下降,响应时间仍会逐步变 长。本阶段可以拒绝服务,但是不能宕机、报错。 加压完成后,所有占用的CPU/内存/IO资源均得到释放。 【何时停止加压】! 1、加压到程序报错、响应时间太长、资源占用过高、宕 机。 2、加压达到单机最大极限请求被拒绝是可以接受的。(联机系统Tomcat单机默认配置600-800并发)性能问题排查方法 Ping网络速度,查看各服务器资源情况。 排查单次访问执行是否存在性能问题FireBug。 响应时间过长如何排查?先分析响应时间,再按 网速-内容大小-数据库-程序报错-业务处理逻辑顺 序排查。涉及到第三方接口服务:Mock第三方接 口再测。 机器负载过高如何排查?先定位问题范围再细查 :1)应用服务器:查看连接数、查看服务器日志、 查看业务处理逻辑、监控JVM运行(jvisualvm.exe )2)数据库:查看连接数、抓出最耗时SQL、 Explain分析SQL语句、优化SQL/索引。性能问题排查使用到的工具 查看监控tomcat性能:jvisualvm.exe或自带监控 查看监控IIS连接数:运行perfmon.msc,添加计数器 Web Service里的Current Connection 查看mysql数据库运行情况:SHOW PROCESSLIST 查看mysql数据库连接情况:show status like Threads%; 找出mysql最慢sql:开启慢查询日志 Oracle查找最近执行过的语句:select * from v$sqlarea t order by t.LAST_ACTIVE_TIME desc; 分析sql执行计划:explain sql语句性能问题排查方法论总结自底向上的分析方法:即从硬件&网络-操作系统-数据库-应用程序-业务需求逻辑。先仔细检查硬件、网络层面相对简单的问题,再深入到系统软件和应用软件相对复杂的领域。问题实践 1、能耗监控平台单次查询电表历史读数响应很慢 2、加压到500并发时应用程序cpu占用率10%, 数据库cpu占用率100% 3、大并发下负载均衡双机部署web网站访问很慢怎么测?怎么排查 ? 可能的问 题有哪些 ?常见的性能问题有哪些?响应时间过长Cpu占用率 100%内存占用率 100%程序挂了测试脚本运 行报错了常见性能问题 数据库:SQL执行耗时耗资源、无索引。 程序:代码运行慢、抛异常、内存溢出。 中间件配置:线程池设置过小、内存设置过小。 网络:交换机、防火墙、内外网。 硬件:存储设备、机器硬件问题。70%的问题来自于数据库 20%来自于程序本身 10%来自于配置优化案例讲解:能耗监控系统案例讲解:测试需求分析测试 分析 213测试策略 负载测试 稳定性测试 测试对象 采用何种技术、协议、工具 测试对象的业务逻辑 测试目的、指标 性能验收测试 平台2000并发、10万台设备 重点测试对象、优先级 大数据测试 案例讲解:发现的问题 1、tomcat线程池配置最大连接数100 2、Mysql数据库连接池连接数最大30 3、sql语句优化索引问题 4、程序处理速度问题(批量写数据库问题)Sql/索引优化相关知识当且仅当SQL语句包含where子句的时候触发 针对可选性高的列建索引 多表连接注意在被驱动表连接字段建索引(小结果表驱动大结果表) 复合索引如何生效:前缀性、按可选性高低排列顺序、模糊查询右侧列失效 不要把索引列套入函数或表达式、或使用函数转换数据类型 大篇幅的字段搜索一个词需要建全文检索索引才有效 JOIN 查询不同类型字段无法使用索引,如果是string类型还必须是相同的字符集 如果Mysql Explain你看到以下现象,请优化: 1)出现了Using temporary使用到了临时表,groupby/orderby常用到 2)rows过多或者几乎是全表的记录数全表扫描 3)key 是 (NULL)无索引 4)possible_keys 出现过多待选索引过多减少不必要的排序group by,order by等 数据类型尽量小而确定:INT、Enum 字段尽可能的使用Not Null 相同的查询语句尽量使用变量避免每次都解析 带查询的增删改操作会锁表案例讲解:性能测试结果案例讲解:存在的问题 分布式系统没有所有程序同时持续跑一遍。 Redis缓存的数据读写正确性没有详细验证。 监控平台加压时没有获取静态资源,一个用户使 用一个长连接。(测程序是可以这样,验收时不行) 数据量没有加到10万设备应有的业务数据量。 测试平台针对程序测试而非验收时涉及到外部接 口的功能应该设置测试桩程序MOCO性能测试误区 一提到性能测试就开始打开LR/Badboy录脚本。 录完脚本后不对脚本进行分析优化就开始加压。 CPU和内存占用率越低越好。 调整参数就能优化性能。 加机器就能优化性能。 内存扩容解决性能问题。性能测试工程师需要具备的技能数据库管理和性能优化测试工具使用 扩展及其原理前端技术 和优化策略 Web、App脚本语言的使用 Python、Shell中间件、操作系统 基本原理和配置程序语言编程及 原理java、c#基本技能有计划的慢慢啃,木有捷径可走性能测试工程的几个阶段高级:给出性能优化解决方 案中级:准确定位性能问题初级:写脚本程序加压参数化一个好的性能测试工程师= 半个DBA + 半个运维 + 半个开发总结回顾 一个Http请求的执行过程4个时间段。 Jmeter的7个关键参数。 加压到什么程度停止加压。 响应时间过长如何排查。 应用程序系统资源占用过高如何排查。 数据库资源占用过高如何排查。 常见性能问题有哪些。 Sql优化怎么排查,关注哪些值。Q/A: Any Question?近期研究推荐:contract testing ServicesMock 技术探索 测试
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号