性能测试、分析与调优基础笔记

点击名片关注 阿尘blog,一起学习,一起成长

随着互联网的发展,性能测试和性能分析永远是一个无法回避的话题,接下来我将从头整理分享一下性能测试与分析调优相关的笔记

1.1 性能测试的基础

性能测试:

简单来说,就是描述系统稳定运行、高并发访问不会出现宕机、获取系统处理用户请求需要的时间、能够支撑并发访问量、系统每秒处理事务等指标

性能测试的分类

性能测试:寻求系统在正常负载下的各项性能指标。

负载测试:测试系统在不同负载下的性能表现,观察不同负载性能曲线变化,发现拐点,找到最大TPS、此时平均响应时间、各项系统资源、硬件资源消耗情况

压力测试(压测):系统在高负载下的表现,寻求系统最大负载及此时吞吐率、查看在超高负载是否出现崩溃,减小负载是否自动恢复

基准测试:针对待测试系统开发中的版本测试,为后续版本作比较

稳定性测试:正常负载,或者稍高一点的负载下,系统进行长时间运行,查看稳定性,各项指标变化

扩展性测试:新上线的系统或者新搭建的环境,先测试单台服务器处理能力,后主键增加服务器,查看性能是否稳定增加,测试集群环境下单台服务器是否有损耗

性能测试场景

业务场景:根据用户行为划分业务场景

测试场景:业务场景真实模拟

单场景:只涉及单个业务流程的测试场景

混合场景:涉及多个业务流程,查看混合业务处理能力

1.2 性能测试指标

衡量系统好坏,看指标

TPS,Transaction Per Second, 每秒能够处理的交易或事务的数量

QPS,Query Per Second, 对一个特定查询服务器z的规定时间内所处理的流量多少

并发用户Concurrency:

绝对并发用户:同一时间点一起请求的用户数

相对并发用户:一段时间内请求的用户数

PV,Page View 页面浏览量,点击量,多次访问多次记录,PV是衡量电子商务网站性能的重要指标,常用全天PV,每小时PV,峰值PV

UV,Unique Visitor ,独立访客,一个电脑只记录一次

PV和UV都很重要,PV可以通过一定模型从TPS转化,PV/UV就是每个用户的平均浏览数

点击率:hit,每秒页面点击数,通常一个hit对应一个请求

吞吐量Throughout:单位时间处理客户请求数量

资源开销,请求或事务对系统资源的消耗,CPU:占用CPU秒数或者核数;内存:内存使用量;IO:每秒读写磁盘字节数

1.3 性能测试目标

1、了解系统的各项指标

2、发现系统中的问题

系统负载是否均衡,每台服务器接收到的并发压力是否均匀

系统是否存在内存泄露问题?执行完代码,不释放内存资源,导致内存耗光,最终程序无法继续执行,(高并发)发现

系统是否存在连接泄露?数据库连接泄露,HTTP连接泄露,TCP/UDP 泄露,短连接一般用完就关闭释放

系统是否存在线程安全问题?高并发访问多线程处理容易出现,多个线程先后篡改数据,造成脏数据

系统是否存在死锁问题?多线程系统常有,一般分为系统死锁、数据库死锁等

系统是否存在网络架构、或者应用架构扩展性问题?性能指标不满足需求,横向或纵向扩展系统硬件后,指标没有按照规律递增

系统瓶颈在何方?

3、解决压测中的问题和性能瓶颈,不断优化调优,大道预期指标

1.4 性能测试基本流程

性能测试需求分析;制定性能测试计划;编写性能测试方案;编写性能测试案例;搭建性能测试环境;构件性能测试数据;编写性能测试脚本;执行性能测试场景;分析性能测试结果,编写测试报告;系统性能瓶颈分析和性能调优

性能分析

熟悉压测业务流程,明确目标,找到业务需求性能点

熟悉应用架构、技术架构、数据架构、部署架构,交互流程、系统硬件配置信息、软件配置信息、性能测试关键点?

用户请求顺序、请求相互调用关系;

业务数据走向、数据流转;

压测可能存在的重点资源消耗,重点监测

关注应用的部署架构:集群架构?是否均匀

并发架构是多线程还是多进程?是否会死锁?数据一致吗?线程同步锁合理吗?

明确线上可能达到的最大用户并发数,用户期望平均响应时间、峰值吞吐量,转化为性能需求指标

测试计划

明确性能测试各个阶段的执行时间点,负责人:谁在哪个时间段进行分析?谁写方案等等

性能测试风险的分析和控制:评估可能的风险和不可控因素,产生的影响,给出短期、长期解决方案(环境因素、人员因素、结果是否达到预期

编写性能测试方案

性能测试场景的设计:单场景、混合场景

定义事务:要明确定义好压测的事务,方便分析响应时间,比如购买商品,将支付,或者下订单定义为一个事务

明确监控对象:针对每个场景可能存在的性能瓶颈:数据库查询、WEB 服务器转发、应用服务器等,确定需要监控对象的指标

定义测试策略

明确性能测试类型:负载?压力?

明确性能测试执行顺序:先单场景,后混合场景

如果要加压,要明确加压方式,

性能测试工具的选取:LoadRunner、JMeter、NGrinder

明确硬件配置和软件配置

网络配置:一般为了排除网络瓶颈,除非有特殊要求外,建议在局域网下进行性能测试,明确网卡类型,交换机类型等

编写性能测试

预置条件、执行步骤(脚本录制、编写、调试、如何加压)、性能预期结果

1.5 性能分析调优模型

2ce0804c7b45f3b101fd9bb56fac0243.jpeg

网络分发:

网络分发是高速发展的互联网时代常用的降低网络拥塞、快速响应用户请求的一种技术手段,最常用的网络分发就是CDN(Content Delivery Network,即内容分发网络),依靠部署在世界各地的边缘服务器,通过中心平台的负载均衡、原服务器内容分发、调度等功能模块,使世界各地用户就近获取所需内容,而不用每次都到中心平台的源服务器获取响应结果。比如,南京的用户直接访问部署在南京的边缘服务器,而不需要访问部署在遥远的北京的服务器

Web服务器:

Web服务器用于部署Web服务,Web服务器的作用就是负责请求的响应和分发以及静态资源的处理

Web服务:

Web服务指运行在Web服务器上的服务程序,最常见的Web服务就是Nginx和Apache

Web Cache

Web Cache指Web层的缓存,一般都是临时缓存HTML、CSS、图像等等静态资源文件

应用服务器

应用服务器用于部署应用程序,如Tomcat、WildFly、普通的Java应用程序,如用程序(如jar包服务)、IIS等

应用程序服务

应用程序服务指运行在应用服务器上的程序,比如Java应用、C/C++应用、Python应用,一般用于处理用户的动态请求

应用缓存

应用缓存指应用程序层的缓存服务,常用的应用缓存技术有Redis、MemCached等,这些技术手段也是动态扩展的高并发分布式应用架构中经常使用的技术手段

数据库DB

用于数据的存储,可以包括关系型数据库以及NoSQL数据库(非关系型数据库),常见的关系型数据库有MySQL、Oracle、SQLServer、DB2等,常见的NoSQL数据库有HBase、MongoDB、ElasticSearch等

外部系统

指当前系统依赖于其他的外部系统,需要从其他的外部系统中通过二次清求获取数据,外部系统有时候可能会存在很多个

1.6 性能分析调优思想

分层分析

f213bb14e08ce26d269c61aa65ff5e58.png

科学论证

科学论证一般通过一定假设和逻辑思维推理来分析性能问题,包括,发现问题、问题假设、预测、实验验证、分析

示例

1fb52cfe3f683eb91868df417897ef77.png

问题追溯,归纳总结

已经上线的系统

46d06743193b240f703597c50d545f89.png

1.7 性能调优技术

1、缓存调优

关键点

(1)如何让缓存的命中率更高?(2)如何注意防止缓存穿透?(3)如何控制好缓存的失效时间?(4)如何做好缓存的监控分析?比如慢日志(Slow Log)分析、连接数监控、内存使用监控等。(5)如何防止缓存雪崩?缓存雪崩指的是服务器在出现断电等极端异常情况后,缓存中的数据全部丢失,导致大量的请求全部需要从数据库中直接获取数据,从而使数据库压力过大造成数据库崩溃。防止缓存雪崩需要注意:

处理好缓存数据丢失,如何快速重新加载到缓存

将缓存数据分布式冗余备份,数据丢失可以迅速切换备份数据

2、同步转异步推送

同步就是一个请求没处理完,不返回响应结果

异步就是收到一个请求,立即返回接受成功返回给调用方,请求处理完成再把结果返回去,要么就是请求放隔一段时间再请求一次

同步转异步就是为了解决阻塞,请求超时问题,快速释放连接

3、拆分

就是将高并发复杂业务拆分成多个简单的调用

高并发的业务单独分为单个子系统

并发量接近的在一个子系统

拆分的目的主要是,防止高并发对低并发业务造成影响,扩展硬件的时候也可以针对性扩展

4、任务分解与并行计算

将一个任务拆分成多个子任务,多个子任务再并行进行,最后返回并行计算结果

目的是通过并行计算增加处理性能能力,对于多个步骤的串行任务也可以进行

5、索引和分库分表

数据库查询尽量创建合适的索引

数据达到亿万级,索引也很慢,就需要分表,分库

按照冷热数据分离,冷宫的数据,不经常被查询使用,就要和热数据分开

按照时间维度查询,历史数据,实时数据分开,也可以按照年月分

按照一定算法分(都是热数据)

扫描二维码关注阿尘blog,一起交流学习

d37d9f1b4b0dd84ae9a038f0cd592938.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是阿尘呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值