如何通过性能测试进行有效的性能分析与调优?

摘要:本学习大纲立足性能分析与调优实践,以性能测试与性能分析调优为题材,结合大量真实案例来讲解如何去分析和定位性能问题以及如何去对已经发现的软件系统的性能问题进行调优。本大纲作者张永清 自2020年7月份出版了《软件性能测试、分析与调优实践之路》
本学习大纲立足性能分析与调优实践,以性能测试与性能分析调优为题材,结合大量真实案例来讲解如何去分析和定位性能问题以及如何去对已经发现的软件系统的性能问题进行调优。本大纲作者张永清 自2020年7月份出版了《软件性能测试、分析与调优实践之路》一书后,由于受到了大量读者的喜爱,在2024年3月份又出版了《软件性能测试、分析与调优实践之路(第2版)》,本书在各大高校学生中广受欢迎。 本课程是作者多年工作中性能分析调优实践经验的分享,作者多年的IT从业经历,使得本课程非常贴近真实的IT工作实践,做到了经验都是来自于实践中的总结。 另外近期作者又推出了《JMeter核心技术、性能测试与性能分析》一书,旨在进一步培养软件性能测试与性能分析方面的综合素养与定位分析性能问题的能力,着重使学生掌握软件性能测试与性能分析相关的必备知识与技能,借助JMeter工具,培养学生实际动手实践的能力和形成如何去分析与解决性能压测问题的思想。 学习特色: 1、 全面地剖析了性能调优的技术和方法,并且结合了大量真实的性能压测案例,让读者能把学习到的理论知识运用到实际的案例中去做实践分析。通过实践,读者不仅可以加深对理论的理解,还可以积累到更多真实的调优经验。 2、 融合了研发和测试,融合了后端和前端,融合了应用和数据库,融合了性能定位的方法论和实践,全面介绍了如何进行性能分析定位调优。 3、 引导初学者如何去将常见的性能分析调优的方法论进行落地,如何去在实际的工作中快速的定位到软件系统的性能问题。 学习大纲: 1、 第一章:性能测试、分析与调优基础 主要介绍性能测试相关的基础概念、性能测试的流程、如何编写性能测试方案等。 1.1、 性能测试的基础 1.1.1、 为什么要性能测试 1.1.2、 性能测试的分类 1.1.3、 性能测试的场景 1.2、 常见的性能测试指标 1.2.1、响应时间 1.2.2、TPS/QPS 1.2.3、并发用户 1.2.4、PV/UV 1.2.5、点击率 1.2.6、吞吐量 1.2.7、资源开销 1.3、 性能测试的目标 1.4、 性能测试的基本流程 1.4.1、性能需求分析 1.4.2、制定性能测试计划 1.4.3、编写性能测试方案 1.4.4、编写性能测试案例 1.4.5、搭建性能测试环境 1.4.6、构造性能测试数据 2、 第二章:性能调优模型与思想以及常见的性能调优技术 主要介绍性能测试分析定位和调优的方法论以及常见的性能技术 2.1、性能分析调优模型 2.2、性能分析调优思想 2.2.1、分层分析 2.2.1、科学论证 2.2.1、问题追溯与归纳总结 2.3、性能调优技术 2.3.1、缓存调优 2.3.2、同步转异步推送 2.3.3、削峰填谷 2.3.4、拆分 2.3.5、任务分解与并行计算 2.3.6、索引与分库分表 2.3.7、层层过滤 3、 第三章:如何对服务器进行性能监控与分析 主要介绍当发生性能问题时,如何快速的从服务器侧来进行分析与定位 3.1、Linux服务器的性能监控与分析 3.1.1、通过vmstat深挖服务器的性能问题 3.1.2、如何通过mpstat分析服务器的性能指标 3.1.3、如何通过pidstat发现性能问题 3.1.4、从lsof中能看到什么 3.1.5、如何通过free看懂内存的真实使用 3.1.6、如何通过top发现问题 3.1.7、网络流量如何监控 3.1.8、nmon对Linux服务器的整体性能监控 4、 第四章:Web中间件的性能分析与调优 主要介绍当发生性能问题时,如何从Web中间件侧来进行调优 4.1、Nginx的性能分析与调优 4.1.1、Nginx负载均衡策略的介绍与调优 4.1.2、Nginx进程数的配置调优 4.1.3、Nginx事件处理模型的分析与调优 4.1.4、Nginx客户端连接数的调优 4.1.5、Nginx中文件传输的性能优化 4.1.6、Nginx的性能监控 4.2、Apache的性能分析与调优 4.2.1、Apache的工作模式选择和进程数调优 4.2.2、Apache的mod选择与调优 4.2.3、Apache的KeepAlive调优 4.2.4、Apache的ab压力测试工具 4.2.5、Apache的性能监控 5、 第五章:应用中间件的性能分析与调优 主要介绍当发生性能问题时,如何从应用中间件侧来进行调优 5.1、Tomcat的性能分析与调优 5.1.1、Tomcat的组件以及工作原理 5.1.2、Tomcat容器Connector性能参数调优 5.1.3、Tomcat容器的I/O分析与调优 5.1.4、SpringBoot中的Tomcat调优 6、 第六章:Java应用程序的性能分析与调优 主要介绍如何快速的定位到Java应用程序中的性能问题以方便来快速调优 6.1、JVM基础知识 6.1.1、JVM简介 6.1.2、类加载器 6.1.3、Java虚拟机栈和原生方法栈 6.1.4、方法区与元数据区 6.1.5、堆区 6.1.6、程序计数器 6.1.7、垃圾回收 6.1.8、并行与并发 6.1.9、垃圾回收器 6.2、JVM如何监控 6.2.1、jconsole 6.2.2、jvisualvm 6.2.3、jmap 6.2.4、jstat 6.3、JVM性能分析与诊断 6.3.1、如何读懂GC日志 6.3.2、jstack 6.3.3、MemoryAnalyzer 7、 第七章:MySQL数据库的性能分析 主要介绍如何快速的定位到Mysql数据库中的性能问题以方便来快速调优 7.1、MySQL数据库的性能监控 7.1.1、如何查看MySQL数据库的连接数 7.1.2、如何查看MySQL数据库当前运行的事务与锁 7.1.3、MySQL中数据库表的监控 7.1.4、性能测试时MySQL中其他常用监控 7.2、MySQL数据库的性能定位 7.2.1、慢SQL 7.2.2、执行计划 7.2.3、MySQL数据库性能定位步骤 7.3、MySQL数据库查询的性能调优 7.3.1、合理创建索引 7.3.2、查询优化 8、 第八章:性能测试、分析与调优案例实践 主要介绍如何去将常见的性能分析调优的方法论进行落地,如何去在实际的工作中快速的定位到软件系统的性能问题。 8.1、JMeter对HTTP服务的性能压测分析与调优 8.2、JMeter对RPC服务的性能压测分析与调优 8.2.1、JMeter如何通过自定义Sample来对RPC服务进行压测 8.2.2、JMeter对GRPC服务的性能压测分析与调优 8.3、JMeter对MySQL性能压测分析与调优 8.3.1、如何利用JMeter为MySQL数据库构造测试数据 8.3.2、JMeter对MySQL数据库的性能压测分析与调优 8.4、常见性能问题分析总结