1.性能优化

概述

今日目标:

  • 性能优化的终极目标是什么
  • 压力测试
  • 压力测试的指标

性能优化的终极目标是什么

用户体验 = 产品设计(非技术) + 系统性能(快,3秒不能更久了)

后端:RT,TPS,并发数

  • 影响因素01:数据库读写,RPC,网络IO,逻辑计算复杂度,缓存
  • 影响因素02:JVM[ Throughput,Footprint,Latency ]

压力测试

  • 什么是压力测试:不断施加压力,预估系统负载能力的一种测试
  • 为什么要对系统进行压测?有必要?
    • 一般而言,只有系统基础功能测试验证完成,系统趋于稳定的情况下,才会进行压力测试
  • 压测的目的是什么?
    • 1.当负载逐渐增加时,观察系统各项性能指标的变化情况是否有异常
    • 2.发现系统的性能短板,进行针对性的性能优化
    • 3.判断系统在高并发情况下是否会报错,进程是否会挂掉
    • 4.测试在系统某个方面达到瓶颈时,粗略估计系统性能上限

压力测试的指标

指标含义
响应时间(RT)是指系统对请求作出响应的平均时间,对于单用户的系统,响应时间可以很好度量系统的性能
吞吐量(Throughput)是指系统在单位时间内处理请求的数量每秒事务数TPS也算是吞吐量的一种
资源利用率CPU占用率,内存使用率,系统负载,网络I/O(降本增效时会考虑)
并发用户数是指系统可以,同时承载的正常使用系统功能的用户数量,用户不同的使用模式会导致不同用户在单位时间发出不同数量的请求
错误率失败请求占比,在测试时添加响应断言,验证不通过即记为错误;若不添加,响应码非200即为错误

各个公司的指标可能还一样,不过前三样,是很重要的

在这里插入图片描述
如上图:总体上来看 2333

  • 两个点:最优用户并发数(利用率刚刚达到峰值),最大并发用户数(吞吐量开始下降的起点,且响应时间还可以接受)
  • 三条线: RT,Throughput,资源利用率
  • 三种状态:资源饱和,吞吐量下降,用户受影响

压力测试工具JMeter

JMeter是Apache组织开发的基于Java的压力测试工具,用于对软件做压力测试;可以用于测试静态和动态资源 ,例如静态文件, Java 小服务程序,数据库,等等。

注意: 需要安装 jdk

压力测试案例

目标:完成压测案例,评测 spring boot 项目的吞吐量上限。
步骤:

  • 1.创建测试计划
  • 配置线程组,http请求,断言,结果监听器
  • 执行测试
  • 查看测试结果,分析测试结果

测试案例移步至此

结束

性能优化理论至此就结束了,如有疑问,欢迎评论区留言。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/133376.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

✔ ★【备战实习(面经+项目+算法)】 11.6 学习

✔ ★【备战实习(面经项目算法)】 坚持完成每天必做如何找到好工作1. 科学的学习方法(专注!效率!记忆!心流!)2. 每天认真完成必做项,踏实学习技术 认真完成每天必做&…

前端工程化(vue2)

一、环境准备 1.依赖环境:NodeJS 官网:Node.js 2.脚手架:Vue-cli 参考网址:安装 | Vue CLI 介绍:Vue-cli用于快速的生成一个Vue的项目模板。主要功能有:统一的目录结构,本地调试&#xff0…

【一、http】go的http基本请求方法

1、http的基本请求 package mainimport ("bytes""fmt""io""net/http""net/url" )func post(){r, err : http.Post("http://httpbin.org/post", "", nil)if err ! nil {fmt.Println("ss")}de…

嵌入式系统设计与应用---ARM指令集(学习笔记)

目录 本文图片截取自书本和老师的ppt 概述 指令格式 指令的条件码 ARM的寻址方式 立即寻址 寄存器寻址 寄存器间接寻址 寄存器移位寻址 变址寻址 多寄存器寻址 相对寻址 堆栈寻址 块复制寻址 ARM指令集简介 跳转指令 1.B指令 2.BL指令 数据处理指令 1.数据传…

大华同轴电缆低时延监控方案300ms

1.具体的方案如下: 同轴电缆可以最长支持500米,8路视频流,原始视频流 产品型号:DH-HAC-HFW2401M-I1 和 DH/HCVR7104HS-V6 京东的上宣称实时: 2.时延具体参数 找技术厂家咨询了具体的时延参数,厂家说无法…

SQL审计是什么意思?目的是什么?有什么好处?

很多刚入行的运维小伙伴对于SQL审计不是很了解,不知道其是什么意思?使用SQL审计的目的是什么?使用SQL审计的好处有哪些?这里我们大家就来一起聊聊,仅供参考哈! SQL审计是什么意思? 【回答】&…

【Redis】String字符串类型-内部编码使用场景

文章目录 内部编码使用场景缓存功能计数功能共享会话手机验证码 内部编码 字符串类型的内部编码有3种: int:8个字节(64位)的⻓整型,存储整数embstr:压缩字符串,适用于表示较短的字符串raw&…

ClickHouse开发系列

一、 ClickHouse详解、安装教程_clickhouse源码安装 二、ClickHouse 语法详解_clickhouse讲解 三、ClickHouse SQL 操作语句详解 四、ClickHouse 高级教程—官方原版 五、ClickHouse主键索引最佳实践 六、MySQL与ClickHouse集成 七、ClickHouse 集成MongoDB、Re…

淘宝API商品详情接口丨关键词搜索接口丨用户评论接口丨淘宝销量接口

淘宝API商品详情接口,关键词搜索接口,用户评论接口,淘宝销量接口如下: 淘宝/天猫获得淘宝商品详情 API 返回值说明 item_get-获得淘宝商品详情 1.公共参数 名称类型必须描述keyString是调用key(必须以GET方式拼接在…

2023-11笔记

1.switch空指针异常 Exception in thread "main" java.lang.NullPointerException:Cannot invoke "String.hashCode()" because "<local2>" is nullat Study5.Test03.main(Test03.java:6)我们由此可以知道&#xff0c;switch语句部分情况下…

「Verilog学习笔记」多功能数据处理器

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点&#xff0c;刷题网站用的是牛客网 分析 注意题目要求输入信号为有符号数&#xff0c;另外输出信号可能是输入信号的和&#xff0c;所以需要拓展一位&#xff0c;防止溢出。 timescale 1ns/1ns module data_…

Python爬虫程序采集机票价格信息代码示例

Python爬虫程序是一种利用Python编写的程序&#xff0c;用于自动化地从互联网上获取数据。它可以模拟人类在网页上的操作&#xff0c;自动化地访问网页并提取所需的数据。Python爬虫程序可以用于各种用途&#xff0c;例如数据挖掘、信息收集、搜索引擎优化等。它通常使用Python…

ABAP Json和对象的转换

se24新建类ZCL_JSON保存 点击修改&#xff0c;进入下图界面&#xff0c;点击红框。 复制粘贴下面代码 CLASS zcl_json DEFINITIONPUBLICCREATE PUBLIC .PUBLIC SECTION. *"* public components of class ZCL_JSON *"* do not include other source files here!!!TYP…

太坑了,降低 代码可读性的 12 个技巧

工作六七年以来&#xff0c;接手过无数个烂摊子&#xff0c;屎山雕花、开关编程已经成为常态。 下面细数一下 降低代码可读性&#xff0c;增加维护难度的 12 个编码“技巧”。 假设一个叫”二狗“ 的程序员&#xff0c;喜欢做以下事情。 1. 二狗积极拆分微服务&#xff0c;一个…

QT 实现两款自定义的温度计/湿度控件

文章目录 0 引入1、带有标尺的温度/湿度计控件1.头文件2.核心代码 2、竖起来的温度/湿度计控件1.头文件2.实现 3、引用 0 引入 QT原生控件没有实现如仪表盘或者温度计的控件&#xff0c;只好自己实现&#xff0c;文章代码部分参考引用的文章。直接上图 图一 带有标尺的温度计…

家政预约服务小程序源码系统 线上+线下两种模式 带完整的搭建教程

人们生活水平的不断提高&#xff0c;使得家政服务行业逐渐成为一个重要的行业。然而&#xff0c;传统的家政服务模式存在一些问题&#xff0c;如信息不对称、服务质量不稳定等。为了解决这些问题&#xff0c;开发一款家政预约服务小程序源码系统变得尤为重要。下面源码小编来给…

【MogDB/openGauss的三种函数稳定性关键字】

一、ORACLE中的类似的函数稳定性关键字&#xff08;DETERMINISTIC&#xff09; 在ORACLE里&#xff0c;function有着一个DETERMINISTIC参数&#xff0c;它表示一个函数在输入不变的情况下输出是否确定&#xff0c;只要输入的参数一样&#xff0c;返回的结果一定一样的&#xf…

3.网络之UDP

UDP协议 文章目录 UDP协议1. UDP概述2. UDP报文格式3. UDP传输限制4. UDP校验和4.1 CRC 循环冗余校验算法4.2 md5 校验算法 1. UDP概述 UDP&#xff08;UserDatagramProtocol&#xff09;是一个简单的面向消息的传输层协议&#xff0c;尽管UDP提供标头和有效负载的完整性验证&a…

Qt 各种数据类型

目录 1. 基础类型 2. log 输出 3. 字符串类型 3.2 QByteArray 构造函数 数据操作 子字符串查找和判断 遍历 查看字节数 类型转换 3.3 QString 4. QVariant 4.1 标准类型 4.2 自定义类型 5. 位置和尺寸 5.1 QPoint 5.2 QLine 5.3 QSize 5.4 QRect 6. 日期和…

【源码解析】聊聊SpringBean是如何初始化和创建

我们知道通过类进行修复不同的属性&#xff0c;比如单例、原型等&#xff0c;而具体的流程是怎么样的呢&#xff0c;这一篇我们开始从源码的视角分析以下。 刷新方法 在刷新容器中有一个方法&#xff0c;其实就是 Bean创建的过程。 finishBeanFactoryInitialization(beanFact…