1、举例
    我曾经在一个零售业大厂做过一个性能咨询。他们的硬件资源很多,256C512G 的机器有一堆,在生产环境中,几乎没有把 CPU 用得超过 5% 的,但是性能问题还不断出现。后来经过两周的性能分析,最后把硬件降到了原来的四分之一,但同时又把性能提高了 10 倍,降硬件的同时,性能也提高了。类似的工作还有很多,正是这些经历让我觉得,在一个性能测试项目中,分析是必然的过程,只有这样,性能测试的工作才有落地的价值。而这个过程,最好是性能工程师来做,不是别人,因为只有性能工程师才可以串起完整的链路。真正的性能工程师,可以把结果整理清楚之后,又可以下结论,提出解决方案:线上根据这个测试结果,做对应的配置,系统肯定可以稳定运行。又或者是这样的:当前测试说明了线上不能支持,后面应该如何优化。
    2、重点
    所以,我们努力的方向是性能的完整工程,这就是我在开头提到的,既要有前期的测试,还要有中间的分析,以及最后的调优,而不仅仅是做做脚本。当然了,做脚本和参数、压场景、出报告,这是所有新手都必经的一个过程,就像写代码先从“Hello World”开始一样。但是这个过程,必然要在短时间内渡过。如果你想把性能测试做好,就不要局限自己的技术范围和认知范围。无论是系统、数据库、代码、中间件、存储、网络,你遇到什么问题,都要试着去分析下该如何判断,并考虑如何在后续的过程中进行调优。
    3、模块划分
    那这个专栏是怎么组织的呢?我主要分了四个模块。第一个模块是性能测试基础篇。我想在这个模块里澄清一些性能测试的基础概念,讲解一些关键部分。但并不是对概念的简单描述,而是根据实际项目,告诉你真正具有指导价值的性能测试概念是什么,并解析这些概念在实际操作中的指导性作用。在第二个模块中,我将通过性能测试工具的实际操作实例,对应性能测试的前后逻辑关系。在这一部分中,我会重点给你讲解,为什么要使用某些工具的某些功能,以便确保工具的使用及结果是为性能测试需求指标和性能分析报告而服务的,而不是浮于表面的“炫技”。在第三个模块中,我将通过操作系统、应用服务器、数据库、缓存服务器、Java、C++ 等监控工具的使用和分析方法,告诉你它们产生的数据在性能分析过程中该如何判断,为测试报告及性能分析提供有效的历史数据。最后一个模块是对前三个模块的凝练,我会讲解不同实际操作场景中的性能测试分析过程,比如实际的瓶颈判断的过程是怎样的,怎么分析出根本的原因,如何提出具体的解决方案,最后的实施效果又是怎样的。总的来说,这门课我自己有一个原则,那就是:我不想用空中楼阁似的理论获得情感上的激情,也不想用未经实践的过程获得短暂认同。