【性能测试】性能分析和调优——步骤及案例

news2024/11/18 23:41:58

文章目录

  • 性能测试瓶颈分析
      • 常见的性能瓶颈分析
      • 性能调优
          • 性能调优步骤
      • 性能调优案例
          • 案例一——CPU
          • 案例二——网络
          • 案例三——SQL查询
          • 案例四——JVM内存溢出

阅读前建议先了解前一篇文章:【性能测试】性能测试监控关键指标

性能测试瓶颈分析

常见的性能瓶颈分析

1、服务器资源分析

  • 服务器资源分析
    CPU已压满(接近100%),需要再看其他指标的拐点出现的时刻是否与CPU压满的时刻基本一致。
  • 内存瓶颈分析
    内存不足时,操作系统会使用虚拟内存,从虚拟内存读取数据,影像处理速度。
  • 磁盘I/O瓶颈分析
    磁盘I/O成为瓶颈时,会出现磁盘I/O繁忙,导致交易执行时在I/O处等待。
  • 网络带宽
    如果接口传递的数据包过大,超过了带宽的传输能力,就会造成网络资源竞争,导致TPS上不去。

2、数据库瓶颈分析

  • 慢查询
  • 数据库的连接池设置太小,导致数据库连接出现排队
  • 数据库出现死锁

3、JVM瓶颈分析

  • 分析JVM的内存

4、程序内部实现机制

5、压测机

  • JMeter单机负载能力有限,如果需要模拟的用户请求数超过其负载极限,也会导致TPS压不上去。

性能调优

性能调优步骤

1、确定问题:根据性能监控的数据和性能分析的结果,确定性能存在的问题(要求)。
2、 确定原因:确定了问题之后,对问题进行分析,找出问题的原因。
3、确定调整目标和解决方案(改服务器参数配置/增加硬件资源配置/修改代码)。
4、测试解决方案。
5、分析调优结果。

注意:性能测试调优并不是一次完成的过程,针对同一个性能问题,上面的五步可能要经过多次循环才能最终完成性能调优的目标(即:测试发现问题-找原因-调整
-验证-分析-再测试。。。)

性能调优案例

案例一——CPU
  • 场景描述
    进入页面后,加载页面的相关数据,包括:轮播图、专题精选等数据。
  • 测试结果数据在这里插入图片描述
  • 问题分析
    1、CPU已接近100%。
    2、一次请求中需要查询很多数据。
  • 解决方案
    1、提升服务器配置。
    2、分批次、异步加载页面数据,页面底部的数据等用户向下滑动页面时再加载。
案例二——网络
  • 场景描述
    进入商品详情页面时,加载商品的详细信息
  • 测试结果数据
    在这里插入图片描述
  • 问题分析
    1、网络宽带已跑满。
    2、一次请求中返回了全部数据。
  • 解决方案
    1、提升服务器网络宽带。
    2、分批次、异步加载商品数据。
案例三——SQL查询
  • 场景描述
    进入首页,在搜索框中输入关键字搜索商品。
  • 测试结果数据
    搜索关键字“纸”时,出现慢查询SQL语句。
  • 问题分析
    1、找出搜索商品接口对应的SQL语句(通过查看代码或者从日志中获取查询SQL)。
    2、分析具体的SQL语句。
    3、定位问题
    (1)当搜索关键字匹配到大量的商品时,某条SQL语句会返回大量重复数据。
    (2)某条SQL语句中的in查询条件中同样包含大量重复的商品分类id。
    (3)某条查询语句会出现查询时间较长。
  • 解决方案
    优化SQL语句,可以进行去重处理。
案例四——JVM内存溢出
  • 场景描述
    请求测试接口,模拟内存溢出。

  • 测试结果数据
    在这里插入图片描述
    在这里插入图片描述

  • 问题分析
    JVM内存占用随着时间的推移占用越来越多,直至内存溢出,系统推出。

  • 解决方案
    排查代码存在的问题,及时释放无用的对象。

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

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

相关文章

qemu网络通信

TAP(官网参考地址) TAP,即Tunneling traffic access point,是一种在Linux上使用的虚拟网卡技术,它可以为应用程序提供安全的网络连接。可以利用TAP搭建桥接网络,bridge两端分别为host和qemu虚拟机。 安装…

带删除的并查集

Almost Union-Find 支持三种操作 合并 x x x和 y y y所在的集合把 x x x移到 y y y所在的集合求 x x x所在的集合的元素个数和元素之和 操作1和3是基本的并查集的操作. 关键在于操作 2 2 2: 若使用朴素的并查集,把节点 1 1 1合并到 3 3 3所在的集合,会…

人机协同

人机协同是指人和机器之间进行合作和协同工作的方式,人机协同是人工智能技术发展的一个重要方向,通过人机协同的方式,可以充分利用机器的智能和人的智慧,共同实现更高效、更智能的工作和生活方式。人机协同可以应用于各种领域和场…

CGAL中2D三角剖分的数据结构

1、定义 三角剖分数据结构是一种设计用于处理二维三角剖分表示的数据结构。三角剖分数据结构的概念主要是设计用作CGAL2D三角剖分类的数据结构,这些类是嵌入平面中的三角剖分。然而,这个概念似乎更一般,可以用于任何可定向的无边界三角剖分曲…

Robotframework自动化常见问题总结

Robotframework自动化新手常见问题总结 1. 经常有人问这个元素找不到,一般先排除这两个地方,再自己找找 A:是否等待了足够的时间让元素加载 (增加sleep xx, wait Until xxx) B: 仔细查查,这个元素是否进入到另一个frame了 (sel…

从订阅式需求发展,透视凌雄科技DaaS模式增长潜力

订阅制,C端消费者早已耳熟能详,如今也凭借灵活、服务更新稳定的特点,逐渐成为B端企业服务的新热点。 比如对中小企业而言,办公IT设备等配套支出都必不可少,但收入本身并不稳定,购置大堆固定资产&#xff0…

uniapp实现文件预览过程

H5实现预览 <template><iframe :src"_url" style"width:100vw; height: 100vh;" frameborder"0"></iframe> </template> <script lang"ts"> export default {data() {return {_url: ,}},onLoad(option…

激光SLAM:Faster-Lio 算法编译与测试

激光SLAM&#xff1a;Faster-Lio 算法编译与测试 前言编译测试离线测试在线测试 前言 Faster-LIO是基于FastLIO2开发的。FastLIO2是开源LIO中比较优秀的一个&#xff0c;前端用了增量的kdtree&#xff08;ikd-tree&#xff09;&#xff0c;后端用了迭代ESKF&#xff08;IEKF&a…

7、单片机与W25Q128(FLASH)的通讯(SPI)实验(STM32F407)

SPI接口简介 SPI 是英语Serial Peripheral interface的缩写&#xff0c;顾名思义就是串行外围设备接口。是Motorola首先在其MC68HCXX系列处理器上定义的。 SPI&#xff0c;是一种高速的&#xff0c;全双工&#xff0c;同步的通信总线&#xff0c;并且在芯片的管脚上只占用四根…

【学习记录】从0开始的Linux学习之旅——应用开发(helloworld)

一、概述 Linux操作系统通常是基于Linux内核&#xff0c;并结合GNU项目中的工具和应用程序而成。Linux操作系统支持多用户、多任务和多线程&#xff0c;具有强大的网络功能和良好的兼容性。本文主要讲述如何在linux系统上进行应用开发。 二、概念及原理 应用程序通过系统调用与…

理解BatchNormalization层的作用

深度学习 文章目录 深度学习前言一、“Internal Covariate Shift”问题二、BatchNorm的本质思想三、训练阶段如何做BatchNorm四、BatchNorm的推理(Inference)过程五、BatchNorm的好处六、机器学习中mini-batch和batch有什么区别 前言 Batch Normalization作为最近一年来DL的重…

漏洞复现--Tenda路由器DownloadCfg信息泄露

免责声明&#xff1a; 文章中涉及的漏洞均已修复&#xff0c;敏感信息均已做打码处理&#xff0c;文章仅做经验分享用途&#xff0c;切勿当真&#xff0c;未授权的攻击属于非法行为&#xff01;文章中敏感信息均已做多层打马处理。传播、利用本文章所提供的信息而造成的任何直…

IntelliJ IDEA创建springboot项目时不能选择java8的问题解决方案

最近博主也有创建springboot项目&#xff0c;发现了IntelliJ IDEA在通过Spring Initilizer初始化项目的时候已经没有java8版本的选项了。 基于这个问题&#xff0c;有了这篇文章的分享&#xff0c;希望能够帮助大家克服这个困难。 如图&#xff0c;现在创建springboot项目的时…

BLIoTLink工业协议转换软件功能和使用教程

1.功能简介 BLIoTLink 是一款各种 PLC 协议、Modbus RTU 、Modbus TCP、DL/T645 等多 种协议转换为 Modbus TCP、OPC UA、MQTT、BACnet IP、华为云 IoT、亚 马逊云 IoT、阿里云 IoT、ThingsBoard、钡铼云 IoT 等协议的软件。 BLIoTLink 下行支持&#xff1a;各种 PLC 协议、Mod…

ES6知识

作用域 局部作用域 局部作用域分为函数作用域和块作用域 函数作用域 在函数内部声明的变量只能在函数内部被访问&#xff0c;外部无法直接访问。函数的参数也是函数内部的局部变量。不同函数内部声明的变量无法互相访问。函数执行完毕后&#xff0c;函数内部的变量实际被清空…

【代码】考虑差异性充电模式的电动汽车充放电优化调度matlab-yalmip-cplex/gurobi

程序名称&#xff1a;考虑差异性充电模式的电动汽车充放电优化调度 实现平台&#xff1a;matlab-yalmip-cplex/gurobi 代码简介&#xff1a;提出了一种微电网中电动汽车的协调充电调度方法&#xff0c;以将负荷需求从高峰期转移到低谷期。在所提出的方法中&#xff0c;基于充…

(一)Tiki-taka算法(TTA)求解无人机三维路径规划研究(MATLAB)

一、无人机模型简介&#xff1a; 单个无人机三维路径规划问题及其建模_IT猿手的博客-CSDN博客 参考文献&#xff1a; [1]胡观凯,钟建华,李永正,黎万洪.基于IPSO-GA算法的无人机三维路径规划[J].现代电子技术,2023,46(07):115-120 二、Tiki-taka算法&#xff08;TTA&#xf…

AutoDL 使用记录

AutoDL 使用记录 1.租用新实例 创建实例需要依次选择&#xff1a;计费方式 → \to → 地区 → \to → GPU型号与数量 → \to → 主机 注意事项&#xff1a; 主机 ID&#xff1a;一个吉利的机号有助于炼丹成功价格&#xff1a;哪个便宜选哪个最高 CUDA 版本&#xff1a;影响…

操作系统-输入输出管理

I/O设备的基本概念和分类 I/O就是输入/输出 I/O设备就是可以将数据输入到计算机&#xff0c;或者可以接收计算机输出数据的外部设备&#xff0c;属于计算机中的硬件部件。 I/O设备按使用特性分类 人机交互类外部设备存储设备网络通信设备 I/O设备按传输速率分类 低速设备中…

小米智能摄像头mp4多碎片手工恢复案例

小米智能摄像头mp4多碎片手工恢复案例 智能摄像头目前在市场上极为常见&#xff0c;仅需要一张存储卡即可实现视频、音频的采集&#xff0c;同时可以通过手机APP进行远程控制&#xff0c;相比传统安防品牌成本更低、更容易部署。在智能摄像头品牌中小米算是绝对的大厂&#xf…