首页 > 其他分享 >压测流程

压测流程

时间:2024-11-23 19:22:52浏览次数:4  
标签:负载 压测 流程 系统 线程 内存 性能

一、性能场景分析与创建

  • 压测场景

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

    • 负载测试:系统在不同负载下的性能表现,发现系统性能的拐点,从而找出系统最佳性能
      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

标签:负载,压测,流程,系统,线程,内存,性能
From: https://www.cnblogs.com/duanpq/p/18564481

相关文章

  • 超全面的论文写作全流程讲解!芝士AI(paperzz)论文写作
    芝士AI(paperzz)官网:https://www.paperzz.cn/确定选题,拟定提纲(1)确定选题第一:要对材料进行认真审读,比较,从中提炼出论题。第二:采用变通的方法,改造使用已有的观点。加上全新的材料,形成自己的论题。第三:要学会放弃。当发现自己搜索到的大量材料,无法支撑起自己的选题时,要及时更......
  • 【stable diffusion部署】Stable Diffusion上手攻略!在线VS本地运行,一文解锁全流程!太详
    前言AI绘画界两大神器Midjourney和StableDifussion想必大家应该都听过,但很多新手玩家可能只用过Midjourney,今天给大家介绍下StableDiffusion的在线及本地运行的5种方法!StableDiffusion是由初创公司StabilityAl和慕尼黑大学机器视觉学习组和AI视频剪辑技术创业公司......
  • 802.15.4 WPAN协议-扫描、同步、入网和退网等消息流程
    802.15.4WPAN协议-扫描、同步、入网和退网等消息流程文章目录一、原语二、消息流程1.接收超帧和发送超帧的时序2.能量检测(ED)信道扫描3.主动扫描和被动扫描3.1主动扫描3.2被动扫描4.启动PAN网络5.重组PAN网络6.入网过程7.退网过程8.同步过程一、原......
  • 深入浅出:SpringBoot启动流程源码分析(持续更新中......)最新日期:2024年10月29日
    Hello,大家好,我是此林。今天来深入底层讲一讲SpringBoot是如何启动的,也就是我们单击运行SpringBoot启动类,它底层发生了什么?SpringBoot启动类很简单,只有一行代码。我们点进run()方法。我们发现,它底层其实进行了两步操作。第一步是new出一个SpringApplication对象,第二个是......
  • Python 文件与模块的运行顺序及调用时的执行流程详解【大白话版本!!】
    Python文件与模块的运行顺序及调用执行流程详解引言ython是一种强大的编程语言,具有极大的灵活性和简洁性。无论是在开发小型脚本,还是构建复杂的应用程序时,理解Python文件的运行顺序以及模块调用时的执行流程都至关重要。尤其当你开发大规模项目,涉及到多个模块(文件)之间......
  • vivado I/O 管脚分配设计流程
    VivadoIDE支持您在设计中交互式探索、可视化、分配和验证I/O端口和时钟逻辑。该环境不仅可确保“生成即保证正确”的I/O分配,而且还可对与内部裸片焊盘相关的外部封装引脚提供可视化。您能够可视化通过器件的数据流,并能够从内外两个方面正确规划I/O......
  • 前言——25机械考研复试专业面试问题汇总 机械复试超全流程攻略 机械复试看这一个专栏
    一、开篇寄语:在准备考研复试的关键时期,许多学弟学妹们往往会寻求各种资料来辅助复习,市面上也因此涌现了大量的“考研复试全流程全攻略”。然而,这些攻略往往存在以下问题:1、内容不完整性遗漏关键信息:许多攻略在描述考研复试流程时,未能全面覆盖所有关键环节,导致考生可能忽视某......
  • SQL Injection | MySQL 手工注入全流程
    0x01:MySQL手工注入——理论篇手工注入MySQL数据库,一般分为以下五个阶段,如下图所示:第一阶段-判断注入点:在本阶段中,我们需要判断注入点的数据类型(数字型、字符型、搜索型、XX型)与后端查询方式,并使用对应的SQL语句进行测试,判断出目标是否存在注入点。第二阶段-......
  • Kubernetes部署Prometheus并实现自定义指标HPA(安装、配置、实现全流程)
    1.安装kube-prometheusKube-Prometheus是一个开箱即用的监控解决方案,用于监控Kubernetes集群。它集成了Prometheus、Prometheus-Adapter、Alertmanager和一系列的导出器(exporters),使你能够轻松地收集和可视化集群中各种资源的监控数据。1.1克隆kube-prometheus仓库gitclon......
  • Android Framework AMS(08)service组件分析-2(startService和StopService关键流程分析)
    该系列文章总纲链接:专题总纲目录AndroidFramework总纲本章关键点总结&说明:说明:上一章节主要解读应用层service组件启动的2种方式startService和bindService,以及从APP层到AMS调用之间的打通。本章节主要关注service组件启动方式的一种:startService启动方式,分析关键API......