性能测试和架构的故事(一)

一、前言: 性能测试的文章主要都是讲性能测试的流程和性能如何调优,这次从客户端(发射器)->服务端(架构)的关系上来解读一下性能测试行为。
二、概念和例子: 做性能测试的同学都接触过下面的关键字:并发数(loadrunner里叫虚拟用户数)、TPS、响应超时、负载、点击率、可靠性、系统宕机。
并发数:是指客户端的并发数(可以理解为客户端的线程数),当客户端的每个线程发送的请求数固定,那么和服务端的线程数成正比。也就是我们经常在压测工具里增加并发数来增加我们的压测请求量。
性能测试和架构的故事(一)
文章图片




TPS:每秒通过事务数,是指在相对时间(1s)内的服务端能处理的事务数。(事务是一个和多个请求的集合:比如一个下单功能由多个请求组成,那多个请求就是一个事物)
性能测试和架构的故事(一)
文章图片


响应超时:就是指请求的响应时间超过了系统的最大等待时间,请求响应时间才是系统处理能力的最直接表现。Tps反而像是给客户、需求人员的一个能够理解的指标。
性能测试和架构的故事(一)
文章图片
-------如果服务端每个线程每秒只能处理1个请求,那么登录响应整,下订单请求就会超时。


系统宕机:也就是常说的“压挂了”,现象上看主要有应用、中间件、技术架构、操作系统/虚拟机等处理大并发事物时造成的不可恢复性的异常。
宕机的原因多种多样:假如是业务应用宕机,那就可能是业务代码、业务架构、技术架构、部署架构、中间件等出现了问题。


点击率:就是每秒请求数。系统的能力主要表现就是处理一定量的请求数。


负载测试:指的是定时定量系统的承载能力。负载测试针对的就是系统架构和技术架构的设计能力,往往会发现一些并发测试发现不了的问题。


可靠性测试:主要针对的是部署能力和高可用能力的验证。


三、架构图: 业务流量和子系统的关系:分流到各个子系统,主要流量会集中在一两个子系统
性能测试和架构的故事(一)
文章图片
请求流入系统的层级:网络层->操作系统->tomcat->技术架构(spring)->jvm->业务code;这同样也是定位问题的顺序。
性能测试和架构的故事(一)
文章图片


业务系统架构:


性能测试和架构的故事(一)
文章图片


技术架构:


性能测试和架构的故事(一)
文章图片
部署架构:
性能测试和架构的故事(一)
文章图片


四、高并发和高可用: 性能测试验证的主要针对的是系统架构里的高并发和高可用(这里以java架构为例),那么高并发和高可用的特性是什么,又是如何入手调优,先了解一下概念:
高并发:并发强调多任务交替执行,区别于并行是多任务同时执行。比如一个核的cpu处理事务就是并发;多个核就会存在并行处理。
知识点:多线程、事物、锁
高并发设计:无状态、拆分、服务化、服务隔离、消息队列、数据处理、缓存。
高可用(HA):用系统的无故障运行时间来度量,主要作用为保证软件故障监控、数据备份和保护、系统告警、错误隔离
【性能测试和架构的故事(一)】业务层设计模式:集群、降级、限流、容错、防重、幂等
高性能数据库设计:高并发数据库服务、分库、分表、分片、mongodb

    推荐阅读