压测流程

news/2025/2/26 6:59:49/文章来源:https://www.cnblogs.com/duanpq/p/18564481

一、性能场景分析与创建

  • 压测场景

    • 业务峰值稳定性:大促业务等峰值业务稳定性考验
    • 新系统上线:准确探知站点能力,防止系统一上线即被用户流量打垮
    • 技术升级验证:大的技术架构升级后进行性能评估,验证新技术场景的站点性能状态
    • 容量规划:对站点进行精细化的熔炼规划,为系统扩容,性能优化提供数据参考,节省成本投入,提高资源利用率
    • 性能探测:探测系统中的性能瓶颈点,进行针对性优化
  • 压测策略(方法)

    • 负载测试:系统在不同负载下的性能表现,发现系统性能的拐点,从而找出系统最佳性能
      image
    • 压力测试:评估系统处于或超过瓶颈时,系统的运行状况,关注点在于系统峰值负载或超出最大载荷情况下的处理能力,同时需要关注负载减小后,系统的恢复能力
      image
    • 基准测试:通过基准测试建立一个已知的性能水平(称为基准线),当系统的软硬件发生变化后再进行一次基准测试,确定变化对性能的影响
    • 配置测试:不断调整系统软硬件各种配置,使得系统性能达到最优
    • 稳定性测试:在特定的负载(略高于正常负载)下,持续施压,验证系统能否长期稳定运行
  • 系统架构梳理(分析潜在风险点)
    技术架构,分层机构,模块划分,数据库、缓存、消息队列等中间件的使用
    image

  • 压什么?

    • 关键业务的接口:根据业务确定
    • 访问量的的接口:可以找开发提供接口访问排行榜,前20-30个
  • 压测方案编写

    • 背景和目的
    • 业务和技术指标
    • 涉及范围和链路:需要和相关的团队一一对其
    • 压测实施里程碑:每轮压测的目标和要做的事情
    • 压测任务及进度:整体的压测任务拆分以及当前进度,提前评估风险
    • 压测模型和策略:类似于功能测试过程中的用例评审,查漏补缺的过程

二、压测脚本编写及调试

  • 编写
    一定要写响应断言

  • 调试

    • 查看结果树
    • 调试取样器
    • JMeter日志
    • 用表格查看结果
    • charles或fiddler

三、脚本执行

  • JMeter单机压测
    Jmeter是纯Java应用,对CPU和内存的消耗较大。在大量并发情况下,容易发生CPU和内存溢出的问题。因此,建议单台机器的线程数不要超过500个,以保持较好的性能和稳定性‌。
  • JMeter分布式压测
    image
  • 空接口压测

四、指标监控

  • 业务指标:如并发用户数、TPS(系统每秒处理事务数)、成功率、响应时间
  • 硬件指标:如CPU、内存、磁盘、网络I/O的使用率
  • 软件指标:线程池、JDBC连接池、JVM(GC/FULL GC/堆大小)、慢SQL、等待/死锁、缓存命中

五、定位瓶颈

  • 确保压测流量完全打到服务

    • 网络层带宽
    • ip地址限流
    • slb自动伸缩失败
    • Nginx负载均衡失败/Nginx机器性能受限
    • 限流熔断降级
    • 施压机器性能瓶颈
  • 如果是某个硬件指标的问题,需要深入分析

    • CPU高: 使用top查看占用资源最高的进程、根具PID查询占用最高的线程,如果是java可以用jstack查看线程正在执行的堆栈
    • 内存高:查看哪个进程占用内存多,以及是否有大量的虚拟内存交换(swap)
    • 磁盘I/O高:通过减少日志输出、异步
    • 网络I/O:查看传输内容大小,可以通过压缩传输内容、在本地设置缓存、分多次传输等降低网络的压力
  • 如果是中间件的问题,需要深入分析

    • 线程池不够:增加线程,并弄清楚为什么线程阻塞
    • JDBC连接池:增加连接数,并弄清楚连接未释放的原因
  • 如果是数据库的问题----80%
    查看慢sql,所引命中率,锁等

  • 如果上述指标正常可以考虑缓存、逻辑、算法等的问题

六、性能调优

  • 性能调优后必须进行功能回归测试
  • 缓存
  • 异步
  • 预先处理
    • web标准提供了至少两种提前加载方式:preload、prefetch
    • 预加载
  • 时空转换
    • 时间换空间:数据放到磁盘、需要时再读取
    • 空间换时间:数据放到内存、cdn

七、输出测试报告

image

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

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

相关文章

它终于发生了。2024年因人工智能倒闭的第一家美国上市企业!

一家美国公司在最近的财报发布后,股价从历史高点暴跌了99%,现在正走在倒闭的最后一段路上。 这家公司叫 Chegg,是一家美国的教育科技公司,主要提供一系列服务,帮助学生完成学业。疫情期间,它曾是备受关注的明星公司,三年前的市值一度高达 120 亿美元。 现在呢?它眼看就…

【RAG 项目实战 04】添加多轮对话能力

【RAG 项目实战 04】添加多轮对话能力 NLP Github 项目: NLP 项目实践:fast【RAG 项目实战 04】添加多轮对话能力NLP Github 项目:NLP 项目实践:fasterai/nlp-project-practice 介绍:该仓库围绕着 NLP 任务模型的设计、训练、优化、部署和应用,分享大模型算法工程师的日常…

设计模式之PIMPL模式

PIMPL是指pointer to implementation,又称作“编译防火墙”,是一种减少代码依赖和编译时间的C++编程技巧,其基本思想是将一个外部可见类的实现细节(一般是通过私有的非虚成员)放在一个单独的实现类中,在可见类中通过一个私有指针来间接访问该类型。设计模式之PIMPL模式 P…

Mac开发_制作.dmg压缩镜像文件

创建一个文件夹打开终端进入此文件夹 cd /Users/gc/Desktop/GC_Codes/打包dmg专用/Ocer_1.0.0_202411231800 使用命令生成application替身,执行以下命令 ln -s /Applications/ Applications.app文件放入文件夹打开磁盘工具:新建映像->选择基于文件夹新建映像选择这个文件…

PTA第4~6次大作业分析及总结

一、前言 ​ 本次Blog为第四~六次PTA的总结,历时三周,主要考察我们对继承的掌握情况,通过完成这几次PTA,我对java的继承的使用有了了解,这三次大作业较之前的大作业难度进一步提升,尤其是第六次大作业,由于之前生病了,我没有投入几天的精力解决这次PTA,在最后一天没能及…

SolidWorks一键生成BOM到Excel里,并可选择带缩略图

此前提到有粉丝朋友分享给我的一个VBA宏程序,能根据Solidworks装配体的零件属性一键导出到Excel,并可选择是否需要缩略图,零件的属性可以自定义,是一个很好的程序。但是试用后,发现有一些问题,其中最大的问题,也是很多粉丝朋友提到的一个问题,无法选择只导出子装配体或…

java二阶段总结(电路模拟程序)

前言第四次题目集知识点:开始应用继承在大题目中,但对于方法重写,多态的要求未涉及继承是面向对象的三大特征之一,可以使得子类具有父类的属性和方法,还可以在子类中重新定义,追加属性和方法。 继承是指在原有类的基础上,进行功能扩展,创建新的类型。方法重载:第一题s…

南昌航空大学-软件学院-22207112-卢翔-JAVAPTA(4-6)博客

前言 PTA第四次作业 设计与分析 题目分析 本题在答题判题程序3基础上新增了选择题和填空题内容,程序输入信息分五种, 输入格式: 1、题目信息格式:"#N:"+题目编号+" "+"#Q:"+题目内容+" "#A:"+标准答案 2、试卷信息格式:"…

js和CSS3自定义鼠标特效

在线预览 下载这是一款js和CSS3自定义鼠标特效。该特效中,使用一个DIV元素来自定义鼠标,通过CSS代码来构建鼠标的形状,并通过js代码来驱动鼠标的动画。使用方法HTML结构 基本的HTML结构如下。<!--鼠标形状元素--> <div id="cursorBlob"></div>…

ArcGIS填补面图层的细小空白并删除主体部分外的零散部分

本文介绍在ArcMap软件中,基于消除面部件(“Eliminate Polygon Part”)工具,对矢量面要素的零碎、空洞区域加以删除,同时将游离于要素主体之外的部分剔除的方法~本文介绍在ArcMap软件中,基于消除面部件(“Eliminate Polygon Part”)工具,对矢量面要素的零碎、空洞区域加…

JetBrains IDE 2024.3 (macOS, Linux, Windows) - 开发者工具

JetBrains IDE 2024.3 (macOS, Linux, Windows) - 开发者工具JetBrains IDE 2024.3 (macOS, Linux, Windows) - 开发者工具 Aqua, CLion, DataGrip, DataSpell, Fleet, GoLand, IntelliJ IDEA, PhpStorm, PyCharm, Rider, RubyMine, WebStorm 请访问原文链接:https://sysin.or…

OO4-6次作业作业总结

总结性博客:Java题目习题集4-6学习心得 一、前言 通过三次习题集的练习,我对面向对象编程(OOP)、集合框架和输入输出操作有了更加深刻的理解。这三次题目涵盖的内容主要包括以下几个方面:题目知识点: 第一次习题集:以Java的继承与多态为核心,强化对类与对象的理解,设计…