项目压测优化实践思路项目性能优化性能问题分析01性能优化的终极目标是什么?用户体验=产品设计(非技术)+

应用性能是产品用户体验的基石,性能优化的终极目标是优化用户体验。当我们谈及性能,最直观能想到的一个词是“快”,哪到底怎么才是快呢?如何又为慢!

性能优化

FPS是体现页面顺畅程度的一个重要指标。

12306购票案例查询按钮的设计

阿里云:5台4C8G机器,4台压力机2C4G

服务器环境:1台压力机,1台应用服务主机,1台数据库与缓存服务器,1CICD服务器

内网ip:172.17.187.81(I/O优化)25Mbps峰值

内网ip:172.17.187.78(I/O优化)25Mbps峰值

内网ip:172.17.187.79(I/O优化)25Mbps峰值

内网ip:172.17.187.80(I/O优化)25Mbps峰值

网络中的Mbps和MBps,及两者的换算关系

Mbps=Megabitpersecond(Mbit/sorMb/s)

MBps=Megabytepersecond

1Mbps=0.125MB/s

25Mbps=3.125MB/s

什么是压测?

压力测试(英语:Stresstesting)是针对特定系统或是组件,为要确认其稳定性而特意进行的严格测试。会让系统在超过正常使用条件下运作,然后再确认其结果。

压力测试是对系统不断施加压力,来预估系统服务能力的一种测试。

为什么对系统压测呢?有没有必要。压不压测要看场景!

一般而言,只有在系统基础功能测试验证完成、系统趋于稳定的情况下,才会进行压力测试。

目的是什么?

压测性能指标有哪些?

在这个图中,定义了三条曲线、三个区域、两个点以及三个状态描述。

三条曲线:

三个区域:

两个点:

三个状态描述:

常用压测工具:

JMeter压测环境架构图:

压测目标总的来说有4条:

ApacheJMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。它可以用于测试静态和动态资源,例如静态文件、Java小服务程序、CGI脚本、Java对象、数据库、FTP服务器,等等。JMeter可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,JMeter允许使用正则表达式创建断言。

目标:完成压测案例,评测SpringBoot项目的吞吐量(TPS)上限。

步骤:

实现:

线程属性说明:

选择keepalive方式,表示使用了长连接。使用长连接可以防止频繁的建立连接,关闭连接消耗性能。一般浏览器都支持keepalive,如果这里不勾选,这样我们的压测的部分性能消耗会发生在建立,关闭连接上,导致我们的压测数据不准确。

(2)配置响应断言:我们接口正常返回code值为20001,如果接口返回code值不是20001表示接口异常,为了测试,这里修改为接口返回code值不为20001则表示访问失败。

配置监听器:监听压测结果【聚合报告和汇总结果很类似,看一个就行】

样本(sample):发送请求的总样本数量

异常(error):出现错误的百分比,错误率=错误的请求的数量/请求的总数

吞吐量(throughout):吞吐能力,在这里相当于TPS

ReceivedKB/sec----每秒从服务器端接收到的响应数据量

SentKB/sec----每秒从客户端发送的请求的数量

记录了样本中的每一次请求

图形结果:分析了所有请求的平均值、终止、偏离值和通吐量之间的关系

横坐标:为请求数量,单位个数

吞吐量TPS(throughout):吞吐能力,这个才是我们需要的并发数

每秒接收KB/sec----每秒从服务器端接收到的数据量

每秒发送KB/sec----每秒从客户端发送的请求的数量

平均字节数

线程组常用来模拟一组用户访问系统资源(API接口)。假如客户机没有足够的能力来模拟较重的负载,可以使用JMeter的分布式测试功能,通过一个JMeter的Master来远程控制多个JMeter的Salve完成测试。

已有内容的分析维度不够:需要加入新的插件

开启插件下载:

在线下载方法如下图所示:

常见的插件如下:

2)压力机活动线程数

压力机活动线程数表明压测过程中施加的压力的情况

3)TPS:每秒的事务数

数字愈大,代表性能越好;

4)QPS:每秒的查询数量

数字愈大,代表性能越好;(1tps>=QPS)

5)吞吐量:每秒的请求数量

压测的时候,我们需要实时了解服务器【CPU、内存、网络、服务器Load】的状态如何,哪如何监控服务器的资源占用情况呢?方法有很多种:

监控原理:

注意:服务器硬件资源的监控,必须在服务端安装serverAgent代理服务,JMeter才能实现监控服务端的cpu、内存、io的使用情况。

好处:可以将所有信息汇总到JMeter工具中来,查看非常方便。

服务器上执行以下命令:

#查询服务器资源使用情况toptop-H如下图所示,可以看到系统负载loadaverage情况,1分钟平均负载,5分钟平均负载,15分钟平均负载分别是0.08,0.03,0.05;

统计信息区前五行是系统整体的统计信息:

好处:不依赖环境,操作系统自带的命令,随时可以查看。

弊端:无法记录历史数据,不能看到变化的趋势

怎么理解系统资源的指标呢,怎么理解系统负载呢?

1)服务器:CPU、内存、网络IO

CPU

内存

网络IO

在类Unix系统中,系统负载是衡量计算机系统执行的计算工作量的指标。

不同的CPU性质不同:单核,双核,四核-->>

举例说明:把CPU比喻成一条(单核)马路,进程任务比喻成马路上跑着的汽车,Load则表示马路的繁忙程度。

情况1-Load小于1:不堵车,汽车在马路上跑得游刃有余:

情况2-Load等于1:马路已无额外的资源跑更多的汽车了:

情况3-Load大于1:汽车都堵着等待进入马路:

如果有两个CPU,则表示有两条马路,此时即使Load大于1也不代表有汽车在等待:

[Load==2,双核,没有等待]

如下分析针对单核CPU

如下分析针对单核CPU的三种情况:

举例:5.18,0.05,0.03

短期内繁忙,中长期空闲,初步判断是一个“抖动”或者是“拥塞前兆”

举例:5.18,1.05,0.03

短期内繁忙,中期内紧张,很可能是一个“拥塞的开始”

情况3:1分钟负载>5,5分钟负载>5,15分钟负载>5

举例:5.18,5.05,5.03

短中长期都繁忙,系统“正在拥塞”

情况01-模拟低延时场景,用户访问接口并发逐渐增加的过程。

线程梯度:5、10、15、20、25、30、35、40个线程

循环请求次数5000次

测试总时长:约等于20msx5000次x8=800s=13分

配置断言:超过3s,响应状态码不为20000,则为无效请求

应用服务器配置:4C8G

外网-网络带宽25Mbps(峰值)

内网-网络带宽基础1.5/最高10Gbit/s

集群规模:单节点

服务版本:v1.0

数据库服务器配置:4C8G

Mbps:Megabitpersecond(Mbit/sorMb/s)MB/s:Megabytepersecond1byte=8bits1bit=(1/8)bytes1bit=0.125bytes1megabyte=10002bytes1megabit=10002bits1megabit=0.125megabytes1megabit/second=0.125megabytes/second1Mbps=0.125MB/s配置监听器:应用服务器:内存、网络、磁盘、系统负载情况

MySQL服务器:内存、网络、磁盘、系统负载情况

进一步提升压力,发现性能瓶颈

聚合报告

ActiveThreads

RT

TPS

此时就是到了重负载区

压测监控平台与JMeter压测结果一致

压了13分钟,产生了5G的数据,按照我们的阿里云服务器配置,相当于三四块钱没了

压测中服务器监控指标

注意:系统网络带宽为25Mbps

优化方案:

方案01-降低接口响应数据包大小(把不应该推送给用户的优化掉)

返回数据量小的接口,响应数据包0.6kb,请求数据包0.421kb

htp://123.56.249.139:9001/spu/goods/10000023827800方案02-提升带宽【或者在内网压测】

25Mbps-->100Mbps(但是会变贵)

云服务器内网:这里在Linux中执行JMeter压测脚本

jmeter-n-t02-jmeter-example.jmx-l02-jmeter-example.jtl所以就是,想要高并发,money得有才行。

方案03-CDN

买CDN,给用户离他最近的流量

优化之后:

方案01-降低接口响应数据包大小,压测结果

问题:可不可以基于RT与TPS算出服务端并发线程数?

服务端线程数计算公式:TPS/(1000ms/RT均值)

结论:

//慢接口@GetMapping("/goods/slow/{spuId}")publicResultfindGoodsBySpuIdTwo(@PathVariableStringspuId){ Goodsgoods=spuService.findBySpuId(spuId); //模拟慢接口 try{ //休眠500ms TimeUnit.MILLISECONDS.sleep(500); }catch(InterruptedExceptione){ e.printStackTrace(); } returnnewResult(true,StatusCode.OK,"查询成功",goods);}响应慢接口:500ms+,响应数据包3.8kb,请求数据包0.421kb

htp://123.56.249.139:9001/spu/goods/slow/10000005620800测试结果:RT、TPS、网络IO、CPU、内存、磁盘IO

Tomcat的默认线程数是200

可以理解为与IO模型有关系,因为当前使用的是阻塞式IO模型。这个问题我们在服务容器优化部分解决。

因为是使用的是NIO,阻塞了之后我们前面配置的是超过3s就会报错,所以报异常了。

使用JMeter做大并发压力测试的场景下,单机受限与内存、CPU、网络IO,会出现服务器压力还没有上去,但是压测机压力太大已经死机!为了让JMeter拥有更强大的负载能力,JMeter提供分布式压测能力。

如下是分布式压测架构:

注意:在JMeterMaster节点配置线程数10,循环100次【共1000次请求样本】。如果有3台Salve节点。那么Master启动压测后,每台Salve都会对被测服务发起10x100次请求。因此,压测产生的总样本数量是:10x100x3=3000次。

搭建JMeterMaster控制机和JMeterSalve施压机

搭建注意事项:

与Window中安装JMeter一样,略

(1)下载安装

#1.改ipvimjmeter-server#RMI_HOST_DEF=-Djava.rmi.server.hostname=本机ip#2.改端口vimjmeter.properties#RMIporttobeusedbytheserver(muststartrmiregistrywithsameport)server_port=1099#Tochangethedefaultport(1099)usedtoaccesstheserver:server.rmi.port=1098(3)配置rmi_keystore.jks

(4)启动jmeter-server服务

(2)Salve启动,并监听1099端口。

(3)在JMeterMaster机器安装目录bin下,找到jmeter.properties文件,修改远程主机选项,添加3个Salve服务器的地址。

remote_hosts=172.17.187.82:1099,172.17.187.83:1099,172.17.187.84:1099

THE END
1.一文2000字入门性能测试!它涉及模拟真实世界中的用户行为、请求和负载,以便测量系统在不同条件下的响应时间、吞吐量、并发用户数和资源利用率等性能指标。 性能测试相关概念 并发:并发是指虚拟并发用户数,从业务角度,也可以理解为同时在线的用户数。 响应时间(Response Time,RT):响应时间是系统处理用户请求的时间。 https://blog.csdn.net/m0_60166861/article/details/144374821
2.如何评估中间件的性能和质量?评估中间件的标准有哪些?股票频道评估中间件的性能,首先要考虑其响应时间。响应时间是指从发送请求到收到响应所经过的时间。较短的响应时间意味着中间件能够快速处理请求,提供更流畅的服务。可以通过模拟大量并发请求来测试中间件在不同负载下的响应时间。 吞吐量也是一个关键指标。它表示单位时间内中间件能够处理的请求数量。高吞吐量意味着中间件能够https://stock.hexun.com/2024-12-06/216014901.html
3.云平台运维指标mob64ca12d1a59e的技术博客云平台运维指标能够帮助运维团队及早识别潜在问题,优化资源利用。常见的运维指标包括: 资源利用率:包括CPU、内存、存储和网络带宽。 故障率:系统故障发生的频率。 响应时间:系统对请求的平均响应时间。 可用性:系统在预定时间内的可用状态。 通过监控这些指标,运维团队能够及时调整资源配置和维护策略,确保云平台的高效运作https://blog.51cto.com/u_16213305/12796076
4.云服务诊断评测体验因便宜云服务器原因(如故障、计划内维护变更等)导致客户某个云资源在某个时段完全不响应用户正常请求(如宕机、完全无法连通、全部返回5xx或不返回等)或服务可用性低于正常波动范围(根据服务特点而定),则认为该云资源在该时段内服务不可用。(因为云产品较多,差异较大,不同云产品在不可用定义上可能存在差别,判断标准http://baike.dayizhe.cn/?article/1644886
5.网站响应时快时慢的真相?只有1%的人知道网站响应时快时慢的真相?只有 1% 的人知道 VR\AR迎来技术突破:高精度识别人类手势的类脑架构来了 Go+ 可有效补全 Python 的不足 几行python代码实现钉钉自动打卡,网友:终于告别缺勤了 技术立业 小米张铎荣获“2020中国开源杰出贡献人物”奖 猜你喜欢AI推送时光机 网站响应时快时慢的真相?只有 1% 的人知道 后端http://m.528045.com/article/d57c4424b9.html
6.提升问题修复效率:详尽描述关键步骤与细节指南,加入即时反馈机制- 问题描述:清晰、准确地描述问题现象,包括错误代码、截图等。 - 影响范围:评估问题影响的用户数量、功能范围等。 - 优先级设定:根据问题的严重程度和影响范围设定优先级。 二、问题分析与定位 1、初步分析: - 查阅历史记录:检查是否有类似问题的历史记录,了解之前的解决方案。 http://m.aibangzhu.vip/bangzhu/30594.html
7.网赌违规提现十倍流水是什么意思?我在某个平台玩了半年,一直都挺我在某个平台玩了半年,一直都挺稳定的,提现很快就到了,昨天提款的时候说要我打十倍流水,我问客服是什么意思,客服一直支支吾吾的不正面回答,让我充值,然后我又充值了3000,今天提现还是让我打十倍流水,请问这是什么情况呀,这个平台是不是不靠谱,可以报警处理吗?警察会管吗?我账号里面有六万块钱的样子。还能提https://mip.66law.cn/question/34611380.aspx
8.招标响应时间什么意思百度旗下专业法律服务平台 首页 我要提问 精选问答 律师推荐 律所推荐 合同文书 律师合作 法宝合作 反馈 登录 招标响应时间什么意思 2022-05-13 知识与热点类问题 法律分析:投标人售后服务响应时间这个指的是你投标时写的提供售后服务的时间。 法律依据:《中华人民共和国招投标法》 第二十四条 招标人应当确定投标人https://lvlin.baidu.com/question/336270051373000325.html
9.在人民法院公众号收到其他平台消息“您的案件已立案”是什么意思法律分析:法院经审查已收案”的意思是指原告的起诉符合法院立案标准,法院作出正式立案的决定。民事案件https://www.lawtime.cn/wenda/q_40896021.html
10.有:城乡居民参保登记,这是我暂停医保后。是什么意思提醒:若长时间无法处理或在途业务状态不明,可能影响到您的医保权益,应及时咨询社保机构或法律专业人士https://china.findlaw.cn/ask/lawyer_66126816.html
11.olap是什么意思啊帆软数字化转型知识库olap是什么意思啊 OLAP(Online Analytical Processing,在线分析处理)是一种用于多维分析数据的技术,能够快速、灵活地查询和分析大规模数据集。它的核心优势包括:多维数据分析、快速响应时间、数据整合能力和用户友好性。多维数据分析是OLAP的关键特性之一,它允许用户从多个角度和层次去审视数据,从而获得更丰富的洞察。例如,https://www.fanruan.com/blog/article/620030/
12.独家专访丨全国统一的医保信息平台全面建成,住院结算平均响应时间人民日报健康客户端:医保信息平台建设逐步趋向于全国统一,这对于未来的医疗保障事业以及居民的医疗报销上意味着什么? 王文君司长:从当前运行情况来看,新平台住院结算平均响应时间约0.8秒,比旧系统性能平均提升3-5倍,意味着在有限资源投入下,平台各方面性能已达到了较优的状态。一方面为参保人提供了更加优质的医保服务,有https://3w.huanqiu.com/a/77c803/48631fPaXh0
13.杭州“亲清在线”平台上,企业员工租房补贴怎么领?操作指南来了答:企业可以通过平台在线咨询,也可以拨打0571-12345进行咨询。 12.什么时候开始申报?什么时候截止? 答:申报的受理时间为3月2日起至此次疫情应急响应结束之日为止。 大家一定要以权威媒体发布为准,做到不信谣、不传谣、不造谣。 【杭州数字经济联合会抗击疫情最新动态】: https://www.thepaper.cn/newsDetail_forward_6334827
14.在线咨询客服平台(多端访问更智能)一、在线咨询客服系统有什么优势 1、访问量增倍:无论你的用户来自于桌面网站、移动网站还是app应用程序,他们都可以通过多个浏览器同时登陆,并通过多个终端设备保持对话和信息传递效果。 这也使得人工客服不需要安装任何软件或插件来回答所有访问者的消息,从而降低了客服响应时间,提高了工作效率。 https://blog.sobot.com/article/4124/view.html
15.在线HTTP速度测试(响应时间测试)及浏览器兼容测试Don这个响应时间远远好于竞争对手。根据美丽说的技术负责人分析,美丽说访问速度提升10%,用户量提升30%。所以网站的响应速度非常重要。此外,一个好网站,能否兼容不同用户不同的浏览器,直接影响用户的数量和点击量。在网站开发过程中,rd及qa进行各种浏览器兼容性测试。以下为第三方响应时间测试及浏览器兼容性测试平台。 https://www.cnblogs.com/Don/p/10267587.html
16.数据编制架构什么是数据编织(Datafabric)?完整指南未针对单实体查询进行优化,导致响应时间变慢 不支持实时数据,因此持续更新数据要么不可靠,要么以不可接受的响应时间交付 关系型数据库 SQL 支持、广泛采用和易用性 非线性可扩展性,需要昂贵的硬件(数百个节点)才能对 TB 级数据近乎实时地执行复杂查询 https://cloud.tencent.com/developer/article/2004142
17.头条文章为什么有媒体实测的加速时间跟官方数据有出入? 为了充分排除起步瞬间的干扰因素,如轮胎打滑、车手反应时间等,零百加速不含起步时间是行业中普遍的一种测试方法,能更纯粹的反应车本身的能力。媒体实测包含起步时间,并且过程中,轮胎状态、路面条件、气候条件和车手反应均会影响加速表现,所以实测的数据会有些轻微出入。 https://card.weibo.com/article/m/show/id/2309405031537782685731
18.《巴比伦的陨落》主创团队访谈:白金工作室有史以来首款在线游戏江原:本作并没有采用 P2P 的通信方式,而是架设了专门的网络服务器和客户端。因为在线服务器内容的开发难度非常之高,所以必须得留有充裕的时间。 齐藤:在 Square Enix 过去的作品中,需要架设网络服务器的动作游戏其实并不多见。 斋藤:决定采用架设服务器的方针后,难免就会遇到网络延迟以及服务器响应时间过长等问题http://club.gamersky.com/m/activity/468835
19.Java中GC的原理是什么这期内容当中小编将会给大家带来有关Java 中GC的原理是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。 1 GC调优目标 大多数情况下对 Java 程序进行GC调优, 主要关注两个目标:响应速度、吞吐量 响应速度(Responsiveness)响应速度指程序或系统对一个请求的响应有多迅速。比如https://www.chenxunyun.com/help/help_info_446.html
20.性能测试的流程例如:满足3000用户在线、240个用户同时访问,访问响应时间不超过2秒,系统资源使用率不超过30%。 3.2 工具 可选LR、JMeter、Locust等主流测试工具,这篇文章主要介绍LR和JMeter相关。 3.3 设计 测试脚本开发、负载生成规则、场景设计及监控方式、测试环境的搭建。 https://104528381.b2b.11467.com/news/1648750.asp
21.苏州qq在线法律咨询平台法律知识咨询助手提示您 全文1.2千字,阅读时间约10分钟 最快5秒响应 继续阅读阅读此文章的还浏览了苏州qq在线法律咨询平台 苏州重大刑事律师免费法律咨询在线平台 以下公司提供苏州法律咨询在线平台服务 在线法律服务平台苏州 苏州法务在线法律咨询以上这些听律小编为大家整理的苏州 qq在线法律咨询平台的内容,如果还有什么疑问,https://m.tinglv.cn/zhishi/2329355.html
22.化工园区安全风险智能化管控平台建设指南(试行)(三)响应时间 29 (四)稳定性 30 九、系统集成 30 (一)硬件系统集成 31 (二)软件系统集成 31 1 一、总则 新世纪以来,我国化工行业快速发展,化工产值占世界总 量由2000 年的 6%增长到 2019 年的 40%,已成为世界http://yjglj.panzhihua.gov.cn/zfxxgk/fdzdgknr_1/aqsc/4341751.shtml
23.法律之家律师咨询法律咨询7*24 小时 法律服务时间 5000 w+ 解答法律咨询 20W + 注册律师 在线法律咨询 最近登录平台服务的律师,服务响应时间更快,更快解决问题。 选择领域: 交通事故 刑事辩护 婚姻 劳动纠纷 房产纠纷 债权债务 医疗纠纷 拆迁 合同纠纷 全部领域 提交 唐玉蓉律师 擅长:债务债权,婚姻家庭 郑萌律师 擅长:婚姻家庭,https://www.falvzhijia.com/