系统中是否存在连接系统问题,连接泄漏包含的非常广泛,可以是数据库连接泄漏、http连接泄漏或者其它的tcp/utp连接泄漏。除了系统实际情况需要建立长连接外,一般短连接都应该是用完就需要关闭和释放。
系统中是否存在线程安全问题,线程安全问题是在高并发访问的多线程处理的系统中经常会出现的问题,如果系统中存在线程安全问题,就会出现多个线程先后更改数据造成所得到的数据全部脏数据,有时候甚至会造成巨大的经济损失。
系统中是否存在死锁问题,死锁问题也是多线程系统中经常会遇到的一个经典问题,一般常见的有系统死锁、数据库死锁等。
系统中是否存在网络架构或者应用架构扩展性问题,扩展性问题一般是指在性能指标无法满足预期的情况下,通过横向或者纵向扩展硬件资源后,系统性能指标无法按照一定的线性规律进行快速递增。
发现系统的性能瓶颈在何处,性能瓶颈一般是指因为某些因素而造成系统的性能的无法持续上升。
3、 解决性能压测中存在的问题和性能瓶颈,通过不断的性能调优,使得系统可以满足预期的性能指标。
一个优秀的性能测试工程师至少需要具备:
1)、熟练使用常用的性能测试工具,包括LoadRunner,Jmeter、nGrinder等,并且精通这些工具来编写性能压测脚本以及设置性能压测场景。
2)、熟练掌握性能测试的基础以及概念,能编写出一个相对完美的性能测试方案,以及能合理的设置性能压测的场景。
3)、熟练掌握Linux、Windows等常见服务器的性能监控以及分析诊断性能瓶颈,比如CPU大幅度的波动怎么办? CPU频繁的上下文切换如何定位?如何看到某个线程当前在执行什么?
4)、熟悉常见的Web中间件,应用中间件以及如何去对中间件进行性能监控分析和参数调优。
5)、熟悉Java应用程序的监控以及日志分析, 目前大部分的性能测试都还是以Java 应用为主,包括大数据的很多项目也都是基于Java,比如Hadoop、Spark、Flink等。
6)、掌握数据库的性能监控以及瓶颈定位分析,最常见的就是掌握Mysql的监控,比如慢日志的分析、执行计划、如何从监控中看出查询有没有走索引?
7)、能写出一个完整的性能压测报告,报告中除了包括压测场景,性能指标外,还要分析性能的拐点,性能的趋势、当前的性能瓶颈在哪里? 可以给出哪些可行的调优方式等等。
《性能测试、分析诊断与调优实践》中到底讲了些什么?
《性能测试、分析诊断与调优实践》 是预计于2020年6~7月份由清华大学出版社出版的侧重于性能调优分析的指导性图书,全书目录如下:
序... 3
1. 性能测试和性能分析的基础概念... 4
1.1. 性能测试的基础概念... 4
1.1.1 性能测试的分类... 5
1.1.2 性能测试的场景... 6
1.2. 常见的性能测试指标... 7
1.2.1 响应时间... 7
1.2.2 TPS/QPS. 7
1.2.3 并发用户... 7
1.2.4 PV/UV.. 8
1.2.5 点击率... 8
1.2.6 吞吐量... 9
1.2.7 资源开销... 9
1.3. 性能测试的目标... 9
1.4. 性能测试的基本流程... 10
1.4.1 性能需求分析... 10
1.4.2 制定性能测试计划... 11
1.4.3 编写性能测试方案... 13
1.4.4 编写性能测试案例... 14
2. 服务器的性能监控和分析... 15
2.1 Linux服务器的性能指标监控和分析... 15
2.1.1 通过vmstat深挖服务器的性能问题... 15
2.1.2 如何通过mpstat 分析服务器的性能指标... 19
2.1.3 如何通过pidstat发现性能问题... 21
2.1.4 从lsof中能看到什么... 29
2.1.5 如何通过free看懂内存的真实使用... 39
2.1.6 如何通过top发现问题... 40
2.1.7 网络流量如何监控... 44
2.1.8 nmon对Linux服务器的整体性能监控... 51
2.2 Windows服务器的性能指标监控和分析... 54
2.2.1 Windows性能监视器... 54
2.2.2 Windows性能监视器下的性能分析... 69
3. web中间件的性能分析... 74
3.1 nginx的性能分析和调优... 74
3.1.1 nginx的负载均衡策略的选择... 74
3.1.2 nginx进程数的配置优化... 77
3.1.3 nginx事件处理模型的优化... 77
3.1.4 nginx客户端连接数的优化... 80
3.1.5 nginx中文件传输的优化... 81
3.1.6 nginx中FastCGI配置的优化... 84
3.1.7 nginx的监控... 87
3.2 apache的性能分析和调优... 89
3.2.1 apache的工作模式选择和进程数调优... 89
3.2.2 apache的mod选择和优化... 94
3.2.3 apache的keepAlive优化... 97
3.2.4 apache的ab压力测试工具... 98
3.2.5 apache的性能监控... 101
4. 应用中间件的性能分析... 102
4.1 tomcat的性能分析和调优... 103
4.1.1 tomcat的组件以及工作原理... 103
4.1.2 tomcat容器Connector性能参数优化... 108
4.1.3 tomcat容器的I/O优化... 110
4.2 wildfly的性能分析和调优... 115
4.2.1 wildfly standalone模式介绍... 115
4.2.2 wildfly standalone模式管理控制台性能参数优化... 119
4.2.3 wildfly standalone模式性能监控... 130
5. java应用程序的性能分析和调优... 139
5.1 jvm基础知识... 139
5.1.1 jvm简介... 139
5.1.2 类加载器... 141
5.1.3 java虚拟机栈和本地方法栈... 144
5.1.4 方法区与元数据区... 144
5.1.5 堆区... 145
5.1.6 程序计数器... 147
5.1.7 垃圾回收... 147
5.1.8 并行与并发... 151
5.1.9 垃圾回收器... 152
5.2 jvm如何监控... 154
5.2.1 jconsole. 154
5.2.2 jvisualvm.. 162
5.2.3 jmap. 175
5.2.4 jstat 176
5.3 jvm性能分析与诊断... 177
5.3.1 如何读懂gc日志... 177
5.3.2 jstack. 182
5.3.3 MemoryAnalyzer. 189
5.4 jvm性能调优技巧... 200
5.4.1 如何减少gc. 200
5.4.2 另类java内存泄漏... 202
6. 数据库的性能分析... 203
6.1 mysql数据库的性能监控... 203
6.1.1 如何查看mysql数据库的连接数... 203
6.1.2 如何查看mysql数据库当前运行的事务与锁... 203
6.1.3 mysql中数据库表的监控... 207
6.1.4 性能测试时mysql中其它常用监控... 211
6.2 mysql数据库的性能定位... 214
6.2.1 慢sql 214
6.2.2 执行计划... 215
7. 性能测试案例分析... 218
7.1 jmeter对http 服务的性能压测分析... 218
7.2 LoadRunner对http 服务的性能压测分析... 232
7.3 jmeter对rpc 服务的性能压测分析... 251
7.3.1 jmeter 如何通过自定义Sample来压测RPC服务... 251
7.3.2 jmeter对GRPC服务的性能压测分析... 262
8. 安卓APP的性能分析... 270
8.1 adb. 270
8.2 DDMS. 273
8.3 Android Studio profiler 288
8.4 systrace. 295
业内专家如何点评《性能测试、分析诊断与调优实践》