项目压测优化实践思路项目性能优化性能问题分析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.云可观测性自动化兼容性全链路压测广州掌动智能是中国领先的数字化转型基础支撑软件核心技术提供商,提供集质量测试、全链路压测、自动化测试、验收测试、兼容性测试、数据运维于一体的全生命周期软件质量保障工具和服务.降低系统在各种突发事件下发生拥塞、崩溃的可能性,为数字化系统稳定、健康、高质量运行https://aidynamic.com/home/news/1
2.中国移动通信设计院取得一种温度控制系统专利,能够实现对机房内中国移动通信设计院取得一种温度控制系统专利,能够实现对机房内温度的方便准确调节 金融界2024年12月20日消息,国家知识产权局信息显示,中国移动通信集团设计院有限公司取得一项名为“一种温度控制系统”的专利,授权公告号 CN 222167485 U,申请日期为2024年5月。专利摘要显示,本实用新型公开了一种温度控制系统,其中https://baijiahao.baidu.com/s?id=1818923935099460314&wfr=spider&for=pc
3.ai在线客服系统赋能企业转型发展,PC端+移动端智慧客服新升级3、随时随地响应客户需求 企业使用在线客服系统,PC端与移动端沟通信息便可以同步。当客服没有在电脑前工作时,也能通过手机收到客户的信息,直接用手机也能回复客户提问。 移动端的功能同样能够满足联系客户的需求,客服人员可以进行在线沟通、工单处理等业务操作,解决了诸多沟通困扰,使客户与企业之间愉快交流。 https://www.ti-net.com.cn/info/1997.html
4.福建省福州第十八中学朗读亭采购项目附件(3)谈判保证金未以报价人名义提交的,响应无效。 5 10.3.1 谈判保证金退还的其它要求:无。 6 11.1 响应文件的份数 (1)纸质响应文件 ①响应文件正本1 份、副本1份。 ②可读介质(光盘或U盘)1份:将上传至福建省政府采购网上公开信息系统的电子响应文件在可读介质中另存1份。 (2)电子响应文件:详见表2《http://zfcg.fuzhou.gov.cn/upload/document/20221216/11d4a044ba344bffa3ed86a50944bbba.html
5.苍穹中级开发考试复习如何在第三方系统打开苍穹页面 1.(单选题)下列有关于第三系统通过url打开苍穹页面,说法错误的是 A、第三方系统打开苍指定页面(非匿名),前提是先登录 B、第三方系统打开苍弯移动端页面,使用formld指定要打开的页面标识 C、第三方系统打开苍审批处理界面,PC端标识是: wf_approvalpage_bac、移动端标识是: wf_approvhttps://vip.kingdee.com/article/481397140678052096
6.M1移动协同软件致远M1移动协同办公管理软件,可以实现在任何时间、任何地点、任何环境都能让用户“轻松、便捷、高效”完成工作。同时,还可以实现PC端、移动端、web端,三端合一,无缝实时覆盖,实现管理无中断。 申请试用 支持双端同时在线 支持PC和移动端同时在线,用户灵活办公,随意切换办公设备。 https://www.seeyon.com/home/zhuanq/yidongoa
7.远程医学管理中心远程会诊系统建设项目公开招标采购公告14. 支持影像资料多功能处理、支持调度解放军总医院影像专家库;支持基于Web在线实时浏览Dicom影像文件。支持移动端实时浏览系统中的Dicom影像文件,进行分析处理。 15. 系统具备拓展功能和与医院院内HIS\LIS\PACS\EMR等系统做接口对接 功能,医院院内远程会诊HIS一体化接口对接实现301HIS一体化系统 对接,实现输入患者唯一http://www.slzxyy.com/pc/index/article/428486
8.移动端渲染原理浅析计算机或手机的渲染是一个非常复杂的过程,本文介绍了渲染相关的一些基础知识,并结合 iOS 和安卓的技术框架介绍了移动端渲染原理,最后详细的解析了 iOS 中的离屏渲染以及圆角优化的一些方法。 渲染基础知识 屏幕绘制的原始数据源 位图 我们在屏幕上绘制图像需要的原始数据叫做位图。位图(Bitmap)是一种数据结构。一个位https://maimai.cn/article/detail?fid=1738608095&efid=qDlHVHRFhJQrHv9x2zIPug
9.即时设计是一款什么软件,有什么优势即时设计dream即时设计用户可在网页、客户端、移动端实时预览设计稿并在线打点评论,产品经理、设计师、开发、团队管理者都可通过此功能快速完成协作沟通与反馈。 ?开发交付 即时设计专门为开发人员打造的模式,支持了开发所需要的各种模块,平台预设、单位换算、独立切图、批量导出、颜色整合定位,样式参数、代码标注等,几乎满足所有交https://blog.csdn.net/weixin_44070413/article/details/130773040
10.工作人员可通过移动端实时监控和即时操作,自由设置照明时间段省电:路灯系统智能化升级 通用公司马村作业区路灯照明系统因路灯数量众多、管理分散、控制响应不及时等问题,时常存在长明灯、白昼灯等能源浪费现象。为节约用电,对路灯照明系统进行了智能化升级,通过安装智能控制设备并引入移动端监控平台,实现对路灯分区域、分时段、分组的精准控制。此外,工作人员可通过移动端实时监控和https://www.zhihu.com/pin/1854487028491767808
11.移动端即时通讯系统实践移动互联网的场景下,网络环境经常变化,需要保证连接是稳定的。 2.2.1 心跳 最经典的做法就是使用心跳,实时地检测连接状态。通常是客户端每隔一小段时间向服务器发送一个数据包,通知服务器自己仍然在线,并传输一些可能必要的数据。如果在一定时间内服务器没有响应,则认为连接可能已经断开,重新尝试连接。 https://www.jianshu.com/p/718fd04d6cd9
12.HENGSHISENSE5.x解决了在版本5.3.2中发布应用时出现系统繁忙错误,避免了重复键值导致的唯一约束冲突问题。 修复图表编辑页中,拖动指标到度量后指标分组刷新问题,确保搜索值保留并只显示搜索结果。 修复在移动端编辑菜单配置项时,“开启内容页面标题栏”无法取消勾选的问题。 https://docs.hengshi.com/release-note/
13.美军联合信息环境(JIE)启示和综述6)安全需要全局化(企业级)、集中化的态势感知、分析、决策和响应能力。 JIE通过汇聚国防部网络的分布式数据,将安全事件的整编分析、安全策略的生成与下发,都依托提供“统一服务”的业务云核心数据中心(CDC)进行,强调集中式安全态势感知、分析和策略生成的作用,并通过JIE管理系统(JMS)进行管理和响应,从感知全局安全态势https://www.secrss.com/articles/17467
14.课题组深耕“数字智治”全力提升城市治理数字化水平——上海城市数字依托该应用场景,实现重点区域大客流人员管控。通过运用图像识别、基于位置服务、客流眼等人工智能技术,实时掌握外滩、南京路步行街、豫园等重点风景区域大客流监测数据、峰值预警及未来客流趋势研判一旦达到客流阈值线上自动预警并启动响应等级预案,线下快速实施客流疏散等应急处置,保障景区大客流安全。 https://www.thepaper.cn/newsDetail_forward_17141800
15.中通安全应急响应中心(ZSRC)刘彤辉,中通信息安全团队全栈开发工程师,负责中通统一认证系统和移动端安全产品的开发工作。 背景 随着公司业务的飞速发展,组织规模的持续扩大,我们需要借助大量各类应用系统进行日常的管理运营,其中有本地部署的核心系统也有公有云部署的各类SAAS服务,有大量自研的也有相当一部分外购的,这就构成了一个相对复杂的混合云架https://sec.zto.com/blog/133kjyQuEemiWwBQVoQUFw
16.什么是crm系统界面零代码企业数字化知识站无论是销售业绩、客户分析还是市场营销效果,定制化报表都能提供详细的数据支持,帮助用户做出科学的决策。简道云的CRM系统在报表定制方面具有极高的灵活性和易用性,用户可以通过简单的拖拽操作,快速生成各类报表,并支持导出和分享,方便团队协作和管理决策。 五、移动端支持https://www.jiandaoyun.com/blog/article/759279/
17.构建新型电力系统下应运而生的新技术行业热点需求侧资源参与电网互动全业务流程的支撑平台,具备设备监控、项目管理、资源池管理、计划管理、计划实施、综合应用、系统管理、移动端小程序管理等功能。 配套的可调节负荷互动响应终端应用于需求侧资源参与电网互动业务,主要用于负荷响应控制与柔性互动调节,包含数据采集、边缘计算、控制功能、信息交互、安全防护功能、数据更http://www.e-sinhai.com/index.php?id=159
18.企业办公软件SaaS软件(系统)服务企业服务· 手机收银实现移动端实时实地收款,更方便快捷。 · PAD收银专业设计大屏iPad页面,更直观更快捷地为客户导购。 · 多样化的支付体系智慧收银平台支持小票内容自定义,在小票上做文章,一次交易的结束,引导用户下次再来消费。 银歌YINGEO-收银系统 5.01条评论 自带商品库,新品扫码一键入库。支持商品一键导入,及连锁店铺https://36kr.com/project-33/
19.智慧建筑智慧工地人脸识别考勤劳务建筑实名制管理系统在现场合理布置定位基站,工人佩戴装载智能芯片的安全帽,当工人进入到工地基站覆盖区域时,将实时被检测到位置信息、人员信息,通过在移动端实时数据整理、分析,清楚了解工人现场分布,给项目管理者提供科学的现场管理和决策依据。 3.塔机安全监控管理系统 通过传感器实时监控塔吊运行,保障作业安全及使用规范 https://www.global-good.cn/mobile/article/index/aid/2487.html
20.DDN(DataDeliveryNetwork)面向企业的区块链系统DDN钱包、浏览器、资产交易所等产品都将提供PC端、移动端、WEB端等多种在线产品,方便用户使用。 核心技术 DDN技术的核心内容包括DDN区块链、跨链技术、侧链技术、智能合约、智能硬件等,这些技术的有机组合,形成整个DDN网络。 1. DDN区块链 1.1 共识机制 https://www.528btc.com/blocknews/34793.html
21.构建“高效办成一件事”系统化工作机制他山之石二是科学配置力量,随着线上线下审批业务量形势变化,统筹安排线上线下服务力量,确保所有办事系统落实专人守护、专人服务、专人管理,持续强化数字化政务服务的人才力量支撑。三是提升综合能力,持续强化线上政务服务的引导、响应、沟通、维护、公开、监督、管理等各环节的系统协同,不断增强数字化政务服务的综合能力支撑。https://www.zgcsswdx.cn/info/8933.html
22.◇决策参考报告2022021◇综述:做好准备应对极端高温天气综述与报告1.将高温天气响应纳入发展规划 2.智慧的城市规划为居民纳凉 3.用高新技术追踪高温 4.用宣传教育传播防灾知识 五、面对极端高温考验,城市还能做些什么? (一)整合统筹多维度的高温防灾规划 (二)通过节能减排削减城市热岛效应 (三)完善城市高温预警系统 https://www.fjlib.net/zt/fjstsgjcxx/zbzl/rdzt/202209/t20220930_470571.htm
23.ETAP21系列ETAP云端和移动端解决方案 eProtect? 集中化的基于Web的保护和资产管理 继电器设置更改管理解决方案,用于在保护继电器和变电站资产的整个生命周期中管理位置、信息和设置。 提高数据质量和访问管理 自动通知、处理和中继设置文件生成 物理继电器和ETAP星形保护装置之间的保护设置同步 与高级故障分析系统(AFAS)集成 https://www.etapchina.com/class/789