性能通识(一)开篇

546 阅读7分钟

引文

英国思想家斯宾塞认为,人类社会沿着由简单到复杂、由低级到高级的过程发展。而信息系统作为人类社会的投影,其发展历程也是由简单到复杂、由封闭孤立到开放协同地发展。

对于复杂系统,随着系统开放度的增加和系统内各部分之间非线性相互作用的增强,系统较易出现无序的混沌状态(系统性能容易出现问题)或突显新的有序结构。正是这些无序状态的出现,了解其中的规律至关重要,这将有助于进行系统管理和调控,因此对复杂性,特别是对处于非稳定和非平衡状态的系统,从底层到业务层逐层分析尤其重要。

一、价值低估的性能(测试)工程师

直到现在,在很多IT企业,性能(测试)工程师仅仅作为软件交付流程的一环,没有引起足够的重视,没有引起重视的根本原因是其对性能的理解仍是模糊和有偏差的。性能(测试)工程师致力于推进系统在稳定性、高可用性、容量规划等方面的建设,他们是一群很容易被忽视的一群人,也被贴上了各种标签,直到系统在生产实际运行出现问题时才会昙花一现,但他们依然默默探索,致力在性能领域探索一条保障生产系统稳定运行有效方法论

美国科学家Pagels说,不惧复杂性和勇于面对矛盾而无需简单性和确定性的能力,是一个探索者的品质 (The capacity to tolerate complexity and welcome contradiction, not the need for simplicity and certainty is the attribute of an explorer)。

复杂系统的状态处于完全有序与完全无序之间,而在现行的项目管理体系下,很难有一个技术人员能够通晓软件的物理架构、逻辑架构、应用架构、数据架构、代码逻辑;因此在系统处于有序状态时(即稳定运行状态),对架构等高阶人才的需求并不大,更对性能测试毫无概念;而当系统由于用户量指数级增大,则可能从有序进入无序转态,这个时候,一系列因前期的架构设计缺乏可扩展性、代码未考虑降级限流、数据库未进行有效的分区分表等等出现CPU、内存方面的问题,**进而导致系统频繁重启、不可用、内存泄漏,连接异常等等常见的运维问题;而这类问题一旦出现,则整个IT条线则处于极度紧张的状态。**问题解决的效率直接影响了整个团队的运营效能,这个时候,在系统上线前期,进行必要的性能压测,是减少线上问题的有效手段。

二、始终不确定性状态的性能(测试)工程师

1、问题的不确定性:

生产系统出现随机问题比比皆是,情绪出现大起大落常常发生在须臾之间,当随机性的性能问题出现时,你可能明明记得以前发现这个问题,而当你用以前的方法去解决时,往往发现是徒劳。

2、往往充当一个分析师:

当进行一个系统的压测时,性能工程师往往需要从巨量的信息(客户端TPS,响应时间;中间层代码,中间件,存储层数据表、sql、锁、事务)中,找到有用的信息,进行分析,找到解决性能问题的根源。

正如纳特·西尔弗的《信号与噪声》在书中说到从巨量的信息中,甄别信号与噪音,这有时是分析师工作的真实描述,有时只是一个浪漫的比喻。

3、经常处在失控状态:

亚当·斯密在《国富论》中告诉了我们最重要的三件事:第一件事是:分工带来效能;第二件事是:市场是无形的手,可以通过价格机制分配稀缺的资源;第三件事是:经济发展由3个重要元素——土地、劳动、资本构成。

分工带来效率的同时,其实也给一些协同工作带来一些挑战,性能(测试)工程师的日常工作往往需要工程学的知识,需要众多的工程师参与,去拆解每一项具体的任务,而每个人负责的任务又有强依赖性,这是这种强依赖,如果一个环节出现问题,必然影响下一个环节,导致性能测试工程师往往在推进任务时出现各种障碍,无法主导整体进度,时常内心焦灼。

4、线性思维向网状思维的转变:

凯文.凯利在《失控》中说到:所有的事情分为三种:简单系统、复杂系统、超复杂系统。

简单系统可以通过公式来描述,结果可以预测,比如一个电机的运动,比如牛顿定律,热力学原理等等,我们人类很多的科学发现均为简单系统;

复杂系统是非线,强耦合和大时滞的系统,特别当有人参与的时候,这个系统就变得尤为复杂,变得难以捉摸。

一个IT系统往往是一个复杂系统,系统出现无法预知的性能问题时,需要从线性思维向网状思维转变,寻求问题的最佳解决办法。

线性思维即线性思维方式,是把认识停留在对事物的抽象而不是事物本质的抽象,并以这样的抽象为认识出发点的,片面、直线、直观、直接的思维方式。

网状思维将每个事物的客观事实进行关联,强调事物会在不同的环境中产生不同的结果。

三、从“内卷”走向创新的性能(测试)工程师

内卷 involution,与之对应的是 evolution,即演化。直观地说,内卷就是“向内演化,或绕圈圈”。更宽泛一点说,所有无实质意义的消耗都可称为内卷。生活中许许多多低水平重复的工作,貌似精益求精,大家都按部就班,埋头苦干,乐此不疲,但只在有限的内部范围施展,不向外扩张,工作方向是向内收敛的,而不是向外发散的,这就叫内卷。

创新从哲学上说是一种人的创造性实践行为,这种实践为的是增加利益总量,需要对事物和发现的利用和再创造,特别是对物质世界矛盾的利用和再创造。人类通过对物质世界的利用和再创造,制造新的矛盾关系,形成新的物质形态。

避免内卷,唯有创新。走在创新路上的性能(测试)工程师往往需要承担更多的责任与担当。

1、左移与右移

左移提测之前已经介入了测试;右移上线后仍需要关注线上情况,通过线上监控和预警,及时发现问题并跟进解决,将影响范围降到最低。

2、自动化迈向智能化

从测试脚本到测试方案再到测试报告,减少对人的依赖,通过工具的整合,实现最大的效能。

3、做一名真正的性能工程师

从架构的视角审视整个软件系统。优化、选型、容量那是基本素养。

4、产品化走向市场

漫漫征途,重在打磨。