全网最全性能测试总结,分析性能测试问题+性能调优方案..._性能测试分析-程序员宅基地

技术标签: jmeter性能测试  压力测试  性能测试  软件测试  软件测试工程师  


前言

性能分析和优化一直是技术领域热门的一个话题,无论是三高(高性能、高可用、高稳定),还是CAP(数据一致性、服务可用性、分区容错性),都强调了服务的性能和可用。

那么在工作中,该如何去测试并进行性能优化呢?

常见的性能问题与原因

网络带宽:
网络对性能的影响不言而喻。如果带宽不足,单位时间内的请求过多,就会导致数据包的传输延迟较大。

如果网络不稳定,也会导致RT的曲线抖动较为剧烈,产生毛刺甚至丢包,这个时候P90/P99的数值也可能变大。因此稳定和足够的网络带宽,对系统的性能来说是很重要的。

负载均衡:
现在的SLB层已经优化的足够好,但如果负载均衡出现问题,可能会导致流量分发不均匀,导致部分应用节点流量异常,健康检查不通过从而被踢下线。

甚至服务注册重试失败或者弹性扩容不够及时,还会导致可用的节点承受了较多的请求最终导致雪崩效应。

安全策略:
现在的软件系统,常见的安全防护策略有ddos高防以及WAF,一般都是部署在SLB和流量网关之间或者更上层。

安全防护策略常见的场景有异常检测、输入验证、安全补丁、状态管理以及基于规则和异常的保护功能。

这些安全策略能够有效的保护系统不受到一些恶意的攻击和侵入,但这些策略生效也是需要耗费时间的。

流量网关:
上面提到的几个部分都可以看做是互联网时代的基础通用层,而网关是伴随着微服务和容器化出现的,作为用户流量的系统入口,网关也承担了较多的功能。

比如:日志、身份鉴权、灰度发布、限流熔断、可观测性metrics、应用限流apm tracing

上述的功能,无论是身份鉴权还是可观测性的metrics的实现,都需要耗费一定时间。特别是对于请求的RT比较敏感的业务,对流量网关功能的耗时要求更为严格。

Web应用层:
这几年前后端分离的系统设计越来越多,web层更多的负责页面的渲染展示和部分讨好用户的交互设计。

如何让用户更快的感知到他所感兴趣的东西,这个时候CDN和缓存就派上用场了。

利用CDN和缓存的特性“就近加载”,让用户感知到的性能更快,也是性能优化领域很重要的一点。

APP应用层:
前面讲了web层负责页面渲染展示和友好的交互,那App应用层(即我们常说的后端服务)则更多的负责逻辑计算。逻辑计算是很吃资源的,当然和它的一些参数配置以及技术架构也有较大关联。

常见的影响后端服务性能的因素如下:
硬件资源:如CPU/Memory;
参数配置:如Activethreads/TimeOut;
缓存配置:缓存中的大Key及缓存命中率;
并行计算:请求下游依赖是串行还是并行?
代码逻辑:最经典的例子——for循环无线套娃;
日志处理:特别是异常日志的处理以及生产日志级别;
处理机制:同步还是异步?如果是异步,MQ容量及消费能力如何?

数据存储层:
数据存储层我们通常理解为数据库。数据库层面影响性能的因素应该是最常见也是最多的。

比如:
锁:不合理的锁使用导致的请求等待;
索引:未加索引或索引未生效导致慢SQL;
数据量:表数据量过大导致的读写变慢等问题;
针对业务扩张以及数据量变大的问题,常见的优化策略有分表、数据库垂直拆分、读写分离等;

压测不是发现问题的唯一手段

回到性能定位分析和优化的话题上,关于性能优化,如下三点是必须铭记的。

1、性能优化的目标
在保持和降低系统99%RT的前提下,不断提高系统吞吐量,提高流量高峰时期的服务可用性。

2、性能优化的挑战
日益增长的用户量(带来访问量的提升,大数据量的存储和处理);
越来越多样的业务(业务的不断迭代和发展,会使其复杂性指数提升);
越来越复杂的系统(为了支撑业务迭代发展,系统架构会变得很复杂);

3、性能优化的路径
降低响应时间;
提高系统吞吐量;
提高服务可用性;

PS:三者关系在某些场景下互相矛盾冲突,不可兼得!

基于上述关于性能优化的几点内容,结合我个人的实践经验和看法,性能定位和分析可以分为:
熟悉业务逻辑,了解系统架构;
掌握技术原理,熟知问题定位和分析优化的软件工程方法论;
不断实践踩坑,总结归纳性能验证、定位分析的方法和经验;
熟练使用性能测试、监控追踪、问题分析和优化的各种工具并擅加利用;

性能优化运行的更快更稳定

分层优化:
请求的处理过程要经过多个链路环节,除了优化耗时最长难度和成本较低的环节之外,在每个环节都进行一定优化,则对整体性能的提升有很大帮助。下面是流量高峰时的一些优化或者说应对案例:

数据库:
扩容:DB是有状态服务,计算层便于扩容,将DB节点放到容器中,有需要扩容;
灾备:对于大流量读场景可通过流量切换方式,将部分流量迁移到备份集群分流;
巡检:慢SQL是常见的问题,可通过自动监控和历史数据分析,提供辅助式决策;

应用层(计算层):
限流:控制访问应用的流量在系统承载范围内
在业务请求入口(网关)限流,避免内部互相调用放大流量;
限流是个演进状态,从连接池、IP、指定SQL到更细的层级粒度做限流;
每个调用层都做限流,每个应用先保证自己可用,对其他依赖调用要做到“零信任”;

降级:强依赖通过熔断做紧急处理,弱依赖提前主动降级
主动降级:提前进行风险识别,然后针对性的降级,可降低已知的风险;
紧急降级:假设出现重大的问题,才需要决策是否启用的方案(风险较大);
预案平台:预案平台的目的是留痕,方便后续把限流降级等配置恢复回来;

熔断:熔断下游强依赖的服务
双十一零点的前半小时, 做一个动态推送,把日志关掉;
真正流量来的时候,留一台机器来观察错误和异常的日志;

隔离:核心和非核心业务做隔离

下面是我整理的2023年最全的软件测试工程师学习知识架构体系图

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

每一次的努力都不会白费,终究会有回报。只要不放弃,坚持到底,你就能看到自己所期待的美好未来。因为奋斗是人生最珍贵的经历,它能让你变得更加坚强、勇敢和有智慧。只有不停地前行,才能走出属于自己的辉煌人生!

每一次的挫折和失败,都是你成长的机会。不要轻易放弃,坚持下去,你会发现自己变得越来越强大,最终实现自己的梦想。

只要你有梦想,就有无限的可能性。不要害怕失败,因为失败不是终点,而是成功的起点。勇往直前,不断尝试,你会发现自己比想象中更强大。坚持不懈,相信自己,你必将创造属于自己的辉煌人生!

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/shuang_waiwai/article/details/130848203

智能推荐

【Cadence Allegro16.6教程】09 焊盘命名规范、制作表贴焊盘和通孔焊盘_allegro表贴焊盘制作-程序员宅基地

文章浏览阅读2.5k次,点赞23次,收藏44次。本文介绍了焊盘命名规范以及如何用Cadence Allegro 16.6制作表贴焊盘和通孔焊盘。_allegro表贴焊盘制作

多线程 i++ 问题-程序员宅基地

文章浏览阅读4.1k次。1,在多线程中我们知道一个问题就是i++操作时,我们得到的结果和我们想象的结果不一样,因为i++操作会被分成三步。分别是取值,++操作,赋值(读,改,写)。当线程执行到取值或者++操作时,线程突然切换,所以最终得到的结果可能有些奇怪!看看下面程序创建是个线程对i进行++操作public class AtomicTest { public static void main(String[] a..._多线程 i++

ArcGIS经纬度转平面坐标教程_经纬度 gis 成面-程序员宅基地

文章浏览阅读629次。点击输出坐标系文本框右侧按钮,弹出空间参考属性对话框,依次点击投影坐标系->Gauss Kruger->CGCS2000->CGCS2000_3_Degree_GK_Zone_35,CGCS2000_3_Degree_GK_Zone_35代表3度带、高斯投影、代号为35度带,具体选择多少带号,根据经度值换算,具体换算方式自己网上查询(测绘人都知道)。在输出要素类处,选择输出数据的路径及名称,点击确定,在arcmap右侧内容列表中生成一个新的要素类,此步骤目的是将数据导出为shp文件。_经纬度 gis 成面

在cmd里输入cd myclass 提示系统找不到指定路径_cmd cd系统找不到指定的路径-程序员宅基地

文章浏览阅读1w次,点赞2次,收藏3次。在cmd里输入cd myclass 提示系统找不到指定路径我刚学java的 其他回答 共 3 条如说:你用javac D:\myclass\Welcome.java成功编译了,那么 在D:\myclass下面会生成一个Welcome.class的文件,接着: 开始→运行→CMD 确定(打开DOS窗口) 把路径换回D:\myclass (操作如:C:\Docum_cmd cd系统找不到指定的路径

Bug系列路径规划算法原理介绍(三)——Tangent BUG算法_tangent bug代码详解-程序员宅基地

文章浏览阅读1.9k次,点赞5次,收藏3次。本系列文章主要对Bug类路径规划算法的原理进行介绍,在本系列的第一篇文章中按照时间顺序梳理了自1986年至2018年Bug类路径规划算法的发展,整理了13种BUG系列中的典型算法,从本系列的第二篇文章开始依次详细介绍了其中具有代表性的BUG1、BUG2、Tangent BUG、I-BUG、RandomBug、BugFlood等算法。_tangent bug代码详解

sqlmap无法使用-r、-l命令问题原因没有携带请求参数即注入点_specified file '1.txt' does not contain a usable h-程序员宅基地

文章浏览阅读5.3k次。爬坑SalMap无法使用-r、-l命令问题原因解决方法背景原因示例sqlmap -r 读取HTTP POST数据包sqlmap -l 读取HTTP GET数据包解决方法http数据包没有请求参数信息,即没有携带注入点默认情况下请求连接为:http://192.168.138.20/Less-1/默认不带有请求参数信息的,需要我们手动添加?id=1还没有带有参数这个时候我们抓包获取http请求信息,sqlmap -r、-l是扫描不出来的,如下图所示:设置请求参数请求连接为:htt_specified file '1.txt' does not contain a usable http request (with paramete

随便推点

帮 C/C++ 程序员彻底了解链接器(转)-程序员宅基地

文章浏览阅读66次。转自:http://blog.jobbole.com/96225/本文旨在帮助 C/C++ 程序员们了解链接器到底完成了些什么工作。多年来,我给许多同事解释过这一原理,因此我觉得是时候把它写下来了,这样不仅可以供更多人学习,也省去我一遍遍讲解。[2009年3月更新,内容包括:增加了 Windows 系统中链接过程可能遇到的特殊问题,以及对某条定义规则的澄清。]促使我写下这篇文章的起因是..._各部分的命名:看看 c 文件中都包含了哪些内容

美化你的APP——从Toolbar开始_如何美化app-程序员宅基地

文章浏览阅读2.5w次,点赞10次,收藏38次。Toolbar是什么Toolbar是Google在Android 5.0中推出的一款替代ActionBar的View。ActionBar必须得作为Activity内容的一部分,而Toolbar可以放在任何层次。Toolbar比ActionBar支持更多的功能,从开始到终点,Toolbar包含下面可选的元素: - 一个导航按钮。 可以是一个向前的按钮、导航菜单按钮,等等。 - 一个logo图片_如何美化app

C# Windows服务安装、卸载批处理代码_c# 安装服务批处理 -i pause-程序员宅基地

文章浏览阅读1.2k次。C# Windows服务安装、卸载批处理代码_c# 安装服务批处理 -i pause

[特别邀请]微软武汉.NET 俱乐部第三次沙龙-程序员宅基地

文章浏览阅读212次。“企业互联网信息门户网站解决方案经验谈” 非常感谢博文视点资讯有限公司(武汉)一如既往对武汉.NET俱乐部的支持。本次活动将于2007年1月6日举行。以下是沙龙的详细安排: 演讲主题:“企业互联网信息门户网站解决方案经验谈”主讲人简介:陈欣军武汉追梦信息产业有限公司 总经理...

Linux命令行配置网络(有线网络,无线网络)// Debian_linux 有线网卡无线网卡 路由设置-程序员宅基地

文章浏览阅读5k次,点赞3次,收藏25次。Debian Linux配置网络环境。//有线网卡//无线网卡_linux 有线网卡无线网卡 路由设置

Android图书馆选座系统课程设计_android的图书馆座位预定系统可行性分析-程序员宅基地

文章浏览阅读5.4k次,点赞14次,收藏111次。项目时间:2020年6月大专二年级的安卓课程设计项目亮点:2D可视化的编辑地图项目简要:管理员编辑图书馆楼层的2D地图,学生在图书馆2D地图上选座。用户管理:登录、注册、修改个人信息、更改头像 。楼层管理:添加、修改、编辑、删除楼层地图、保存为模板 。模板管理:修改、删除、生成为楼层地图 。选座管理:查询座位、我的座位、修改座位 。知识点:application+sqlite+canvas+碎片+re_android的图书馆座位预定系统可行性分析

推荐文章

热门文章

相关标签