当前位置: 首页 > news >正文

性能测试面试问题,一周拿3个offer不嫌多

性能测试的三个核心原理是什么?

1.基于协议。性能测试的对象是网络分布式架构的软件,而网络分布式架构的核心是网络协议
2.多线程。人的大脑是单线程的,电脑的cpu是多线程的。性能测试就是利用多线程的技术模拟多用户去负载
3.模拟真实场景。用户的访问时间,访问频率都不是固定的。

性能测试的核心关注点是什么?

1.用户关注。响应时间,稳定性、可恢复性
2.运维关注。服务器/数据库资源使用,服务器端处理速度,系统能否支撑7*24小时
3.测试关注。最大访问用户数量,最大业务处理数量,内存资源能否正常回收
4.开发关注。代码:算法、sql语句

jmeter性能测试:2023最新的大厂jmeter性能测试全过程项目实战详解,悄悄收藏,后面就看不到了_哔哩哔哩_bilibiliicon-default.png?t=N6B9https://www.bilibili.com/video/BV1Vu411L77o/?spm_id_from=333.999.0.0

 

 

简述性能测试流程

1.分析性能需求。挑选用户使用最频繁的场景来测试,比如:登陆,搜索,下单等等。确定性能指标,比如:事务通过率为100%,TOP99%是5秒,最大并发用户为1000人,CPU和内存的使用率在70%以下
2.制定性能测试计划,明确测试时间(通常在功能稳定后,如第一轮测试后进行)和测试环境和测试工具
3.编写测试用例
4.搭建测试环境,准备好测试数据
5.编写性能测试脚本
6.性能测试脚本调优。设置检查点、参数化、关联、集合点、事务,调整思考时间,删除冗余脚本
7.设计测试场景,运行测试脚本,监控数据
8.分析测试结果,收集相关的日志提单给开发
9.性能测试回归
10.编写测试报告

如何确定系统最大负载?

通过负载测试,不断增加并发,随着并发数的增加,各项性能指标也会相应产生变化,当出现了性能拐点,比如,当用户数达到某个数量级时,响应时间突然增长,那么这个拐点处对应的用户数就是系统能承载的最大用户数。Jmeter中可以用rps定时器或者阶梯加压线程组。

你们系统哪些地方(哪些功能)做了性能测试?

选用了用户使用最频繁的功能来做测试,比如:登陆,搜索,提交订单

你们的并发用户数是怎么确定的?

1)会先上线一段时间,根据收集到的用户访问数据进行预估
2)根据需求来确定,使用高峰时间段,注册用户数,单次响应时间等

你们性能测试在什么环境执行?

搭建一套独立的性能测试环境进行测试

你们性能测试什么时间执行?

基准测试:功能测试之后,系统比较稳定的时候再做。
负载测试:夜深人静,系统没人用的时候

怎么分析性能测试结果?

首先查看事物通过率,然后分析其他性能指标,比如,确认响应时间,事务通过率,CPU等指标是否满足需求;如果测试结果不可信,要分析异常的原因,修改后重新测试

think_time的作用是什么?

在业务基准测试中模拟用户的思考时间

在确定性能测试结果可信后,如果发现以下问题,按下面提供的思路来定位问题

问题一:响应时间不达标
查看事务所消耗的时间主要在网络传输还是服务器,如果是网络,就结合Throughput(网络吞吐量)图,计算带宽是否存在瓶颈,如果存在瓶颈,就要考虑增加带宽,或对数据的传输进行压缩处理;如果不存在瓶颈,那么,可能是网路不稳定导致。如果主要时间是消耗在服务器上,就要分别查看web服务器和数据库服务器的CPU,内存的使用率是否过高,因为过高的CPU,内存必定会造成响应时间过长,如果是web服务器的问题,就把web服务器对应上对应的用户操作日志取下来,发给开发定位;如果是数据库的问题,就把数据库服务器对应上对应的日志取下来,发给开发定位。

问题二:服务器CPU指标异常
1:关注cpu利用率和负载情况,如果利用率过低负载过高,那么可能是进程队列过多,造成了阻塞
2:关注上下文切换,如果主动切换过多,那么可能是内存/IO瓶颈;如果被动切换过多,那么可能时间片不够,可以考虑调整进程优先级来增加时间片

问题三:内存溢出,进程消失

1:观察堆内存的年轻代与老年代空间分配是否合理,调整内存参数
2:swap空间是否不足,触发了oomkiller

问题四:程序在多用户运行时严重超时,甚至提示连不上服务器。

程序可能是单线程处理机制,后续的线程全部在排队等待

问题五:如何识别系统瓶颈?

1:随着负载的增加,吞吐量是否能持续稳定的上升,找到吞吐量下滑的那个点
2:随着负载的增加,响应时间是否开始变长,找到响应时间突然变长的那个点
3:随着负载的增加,是否开始出现错误

常见的施压模型有哪几种?

1、并发模式(虚拟用户模式)
并发是指虚拟并发用户数,从业务角度,也可以理解为同时在线的用户数。从客户端的角度出发,摸底业务系统各节点能同时承载的在线用户数,可以使用该模式设置目标并发,也就是jmeter工具里面的线程数
2、RPS 模式(吞吐量模式)
RPS(Requests Per Second)是指每秒请求数。RPS 模式即“吞吐量模式”,通过设置每秒发出的请求数,从服务端的角度出发,直接衡量系统的吞吐能力。

 jmeter性能测试:2023最新的大厂jmeter性能测试全过程项目实战详解,悄悄收藏,后面就看不到了_哔哩哔哩_bilibiliicon-default.png?t=N6B9https://www.bilibili.com/video/BV1Vu411L77o/?spm_id_from=333.999.0.0

 

性能测试的应用领域有哪些?

能力验证:通过实际的测试结果证明自己系统的预期能力
瓶颈分析:通过一系列的测试手段发现系统的性能瓶颈(并发,负载,压力,失效恢复)
性能调优:通过一系列的技术手段优化系统性能,包括响应时间,吞吐量,资源利用率
容量规划:为了符合未来的规划预期(用户数,市场占有率),对资源做相应的调整

jmeter如何设计性能测试场景?

并发测试:基础线程组(强调单位时间的并发,不存在绝对并发)
基准测试:反复对比结果,验证调优结果是否通过(tps是否提升,响应时间是否下降)
负载测试:持续不断地增加负载,发现性能瓶颈(阶梯加压线程组,Concurrency Thread Group)
并发用户模式的负载:不断增加并发用户数,发现瓶颈
吞吐量模式的负载:不断增加每秒请求数(rps)对服务端施压,发现tps瓶颈
压力测试:tps瓶颈点上持续负载
       稳定性压力测试:tps保持高压稳定。一般取最大tps的80%持续运行
       破坏性压力测试:目的是只需要服务端出现异常
失效恢复测试:出现异常之后,系统可以很快的恢复
容量规划测试:50万,高峰时间段2小时

tps无法上升原因有哪些?

1.网络带宽
在压力测试中,有时候要模拟大量的用户请求,如果单位时间内传递的数据包过大,超过了带宽的传输能力,就会造成网络资源竞争,导致服务端接收到的请求数达不到服务端的处理能力上限。

2.连接池
可用连接数太少,造成请求等待。连接池一般分为服务器连接池(比如Tomcat)和数据库连接池(或者理解为最大允许连接数也行)。

3.GC
如果堆内存分配的不合理,就会导致频繁的gc,gc会导致线程暂停。尤其是fullgc,会造成线程长时间暂停

4.数据库配置
高并发情况下,如果请求数据需要写入数据库且需要写入多个表的时候,数据库的最大连接数不够,或者写入数据的SQL没有索引,或没有主从分离、读写分离,就会导致数据库事务处理过慢,影响到TPS。

6.硬件资源
包括CPU(配置、使用率等)、内存(占用率等)、磁盘(I/O、页交换等)

7.压力机
单机负载能力有限,如果需要模拟的用户请求数超过其负载极限,会影响TPS(这个时候就需要进行分布式压测来解决问题)

 jmeter性能测试:2023最新的大厂jmeter性能测试全过程项目实战详解,悄悄收藏,后面就看不到了_哔哩哔哩_bilibiliicon-default.png?t=N6B9https://www.bilibili.com/video/BV1Vu411L77o/?spm_id_from=333.999.0.0

相关文章:

性能测试面试问题,一周拿3个offer不嫌多

性能测试的三个核心原理是什么? 1.基于协议。性能测试的对象是网络分布式架构的软件,而网络分布式架构的核心是网络协议 2.多线程。人的大脑是单线程的,电脑的cpu是多线程的。性能测试就是利用多线程的技术模拟多用户去负载 3.模拟真实场景。…...

Android Bitmap压缩

Android View截屏长图拼接(RecyclerView) 我们在实际使用中,往往图片转化成Bitmap,对Bitmap操作的时候(如:截屏分享等),可能Bitmap会过大,导致无视实现对应功能。那么我们就需要对B…...

不同子网络中的通信过程

从输入www.baidu.com经历了什么 一、DNS(网址->IP) 二、ARP(IP->MAC) A->B:有数据发送,数据封装ip之后发现没有主机B的mac地址。然后ARP在本网段广播:检查目标地址和源地址是否在同一…...

Ubuntu Touch OTA-2 推出,支持 Fairphone 3 和 F(x)tec Pro1 X

导读UBports 基金会近日宣布为基于 Ubuntu 20.04 LTS (Focal Fossa) 的 Ubuntu Touch 移动操作系统发布并全面提供 OTA-2 软件更新。 Ubuntu Touch OTA-2 在首次 OTA 更新整整四个月后发布,支持新设备,包括 Fairphone 3、F(x)tec Pro1 X 和 Vollaphone X…...

【网络】数据链路层——MAC帧协议 | ARP协议

🐱作者:一只大喵咪1201 🐱专栏:《网络》 🔥格言:你只管努力,剩下的交给时间! 来到数据链路层后,完整的数据被叫做数据帧,习惯上称之为MAC帧。 MAC帧协议 | A…...

【Spring Boot】Spring Boot自动加载机制:简化应用程序的启动

在微服务盛行的今天,快速搭建和启动应用程序变得至关重要。Spring Boot作为Java生态系统中主流的框架,其自动加载机制使得开发者能够快速构建和启动应用程序。本文将详细介绍Spring Boot的自动加载机制,并通过代码示例加以说明。 首先&#…...

centos7搭建apache作为文件站后,其他人无法访问解决办法

在公司内网的一个虚拟机上搭建了httpsd服务,准备作为内部小伙伴们的文件站,但是搭建好之后发现别的小伙伴是无法访问我机器的。 于是寻找一下原因,排查步骤如下: 1.netstat -lnp 和 ps aux 先看下端口和 服务情况 发现均正常 2.…...

【开个空调】语音识别+红外发射

废话少说,直接上空调板子:YAPOF3。红外接收发射模块用的某宝上发现的YF-33(遗憾解码还没搞清楚,不然做个lirc.conf功能才多)。最后是语音识别用的幻尔的,某宝自然也有,它是个i2c的接口。 本篇胡说八道其实纯粹为了留个…...

【hibernate validator】(二)声明和验证Bean约束

首发博客地址 https://blog.zysicyj.top/ 一、声明bean约束 1. 字段级别约束 不支持静态类型字段 验证引擎直接访问实例变量,不会调用属性的访问器 在验证字节码增强的对象时,应适用属性级别约束,因为字节码增库无法通过反射确定字段访问 pac…...

Redis持久化机制之RDB,AOF与混合AOF

Redis是一款高性能的NoSQL数据库,它的速度非常快,同时也支持多种持久化机制,其中最常用的是RDB和AOF,还有一种混合AOF方式。那么这些持久化机制到底是什么,有什么不同呢? RDB是Redis默认的持久化方式&…...

为啥外卖小哥宁愿600一月租电动车,也不花2、3千买一辆送外卖!背后的原因......

大家好!我是菜哥! 又到周末了,我们聊点非技术的东西。最近知乎“为何那些穿梭于城市大街小巷的外卖小哥,宁愿每月掏出600块租一辆电动车,也不愿意掏出2、3千买一辆呢?” 冲上热榜! 听起来有点“…...

分布式定时任务框架Quartz总结和实践(2)—持久化到Mysql数据库

本文主要介绍分布式定时任务框架Quartz集成SpringBoot持久化数据到Mysql数据库的操作,上一篇文章使用Quartz创建定时任务都是保存在内存中,如果服务重启定时任务就会失效,所以Quartz官方也提供将定时任务等信息持久化到Mysql数据库的功能&…...

Linux 服务器搭建配置,开发效率一飞冲天 - Centos 篇

大家好,我是比特桃。最近白嫖了一台 Centos 云服务器,用来做日常开发,特此记录一下搭建配置的过程。 我之前有篇文章是基于 Ubuntu 的:Linux 服务器搭建配置,开发效率一飞冲天 - Ubuntu 篇 如同个人电脑一样&#xff0…...

Day46|leetcode 139.单词拆分

leetcode 139.单词拆分 题目链接:139. 单词拆分 - 力扣(LeetCode) 视频链接:动态规划之完全背包,你的背包如何装满?| LeetCode:139.单词拆分_哔哩哔哩_bilibili 题目概述 给你一个字符串 s 和一…...

深入理解高并发编程 - Thread 类的 stop () 和 interrupt ()

stop() stop() 方法被用于停止线程。然而,需要注意的是,stop() 方法已经被标记为已废弃(deprecated),并且不推荐使用。这是因为使用该方法可能导致不可预料的问题和数据不一致性,因此它被认为是不安全的。…...

C语言之三子棋游戏实现篇

目录 主函数test.c 菜单函数 选择实现 游戏函数 (函数调用) 打印棋盘数据 打印展示棋盘 玩家下棋 电脑下棋 判断输赢 循环 test.c总代码 头文件&函数声明game.h 头文件的包含 游戏符号声明 游戏函数声明 game.h总代码 游戏函数ga…...

jupyter notebook 插件nbextensions的安装

安装步骤: 1、打开 jupyter notebook,新建一个 python 文件; 2、 分别输入以下代码,然后运行,出现 warning 不影响使用,如果出现 errors,则说明下载有问题: !python -m pip install…...

Spring boot 集成单元测试

1.引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency> 2. 3.编写测试类 package com.enterprise;import com.enterpr…...

基于C++的QT实现贪吃蛇小游戏

文章目录&#xff1a; 一&#xff1a;效果演示 二&#xff1a;实现思路 三&#xff1a;代码实现 widget.h widget.cpp main.cpp 一&#xff1a;效果演示 效果图◕‿◕✌✌✌ 代码下载 二&#xff1a;实现思路 通过按键控制蛇的移动&#xff0c;每吃一个商品蛇身就会加长…...

Spring Boot整合RabbitMQ之路由模式(Direct)

RabbitMQ中的路由模式&#xff08;Direct模式&#xff09;应该是在实际工作中运用的比较多的一种模式了&#xff0c;这个模式和发布与订阅模式的区别在于路由模式需要有一个routingKey&#xff0c;在配置上&#xff0c;交换机类型需要注入DirectExchange类型的交换机bean对象。…...

行式存储与列式存储

1.概述 数据处理大致可分为两大类&#xff0c;联机事务处理OLTP(on-line transaction processing) 和联机分析处理OLAP(on-line analytical processing)。 OLTP是传统关系型数据库的主要应用&#xff0c;用来执行一些基本的、日常的事务处理&#xff0c;比如数据库记录的增、删…...

windows上sqlserver的ldf日志文件和数据mdf文件分别放到不同的磁盘

之前我的windows上已安装好了sqlserver2017&#xff0c;有一个名为TestDb的数据库。ldf文件和mdf文件都一起放在D:\Database目录下。现在需要把ldf日志文件到E盘的database目录下。 重要的事情先说三遍 先停止网关&#xff08;例如nginx&#xff09;并备份数据库 先停止网关&am…...

vue3+uni——watch监听props中的数据(组件参数接收与传递defineProps、defineEmits)

案例说明 A页面引用的子组件B A页面 <template><view>//引用组件<serviceOrder change"change" :list"list" :current"type"></serviceOrder></view> </template><script setup>import serviceOrd…...

mybatis与spring集成与spring aop集成pagehelper插件

Mybatis与Spring的集成 Mybatis是一款轻量级的ORM框架&#xff0c;而Spring是一个全栈式的框架&#xff0c;二者的结合可以让我们更加高效地进行数据持久化操作。 Mybatis与Spring的集成主要有两种方式&#xff1a;使用Spring的Mybatis支持和使用Mybatis的Spring支持。 使用…...

Mybatis基础

...

TypeScript-- 配置Typescript环境(1)ts 转js,tsc --watch 实时编译

文章目录 安装Typescript判断是否有运行权限编写第一Typescript文件手动编译Ts文件转Js文件实时编译 安装Typescript npm install -g typescript 判断是否有运行权限 命令行运行 tsc -v 遇到了权限问题 用管理员打开window自带的powershell 运行如下指令即可&#xff1a; Set-…...

Dockerfile快速搭建自己专属的LAMP环境,生成镜像lamp:v1.1,并推送到私有仓库

环境&#xff1a; CentOS 7 Linux 3.10.0-1160.el7.x86_64 具体要求如下&#xff1a; &#xff08;1&#xff09;基于centos:6基础镜像&#xff1b; &#xff08;2&#xff09;指定作者信息&#xff1b; &#xff08;3&#xff09;安装httpd、mysql、mysql-server、php、ph…...

Lottery抽奖项目学习第二章第一节:环境、配置、规范

Lottery抽奖项目学习第二章第一节&#xff1a;环境、配置、规范 环境、配置、规范 下面以DDD架构和设计模式落地实战的方式&#xff0c;进行讲解和实现分布式抽奖系统的代码开发&#xff0c;那么这里会涉及到很多DDD的设计思路和设计模式应用&#xff0c;以及互联网大厂开发中…...

OpenCV之reshape函数

函数原型&#xff1a; /** brief Changes the shape and/or the number of channels of a 2D matrix without copying the data.The method makes a new matrix header for \*this elements. The new matrix may have a different sizeand/or different number of channels. A…...

【JavaEE】Spring事务-@Transactional参数介绍-事务的隔离级别以及传播机制

【JavaEE】Spring事务&#xff08;2&#xff09; 文章目录 【JavaEE】Spring事务&#xff08;2&#xff09;1. Transactional 参数介绍1.1 value 和 transactionManager1.2 timeout1.3 readOnly1.4 后面四个1.5 isolation 与 propagation 2. Spring 事务隔离级别 - isolation2.…...

网站实现多模板切换/网络营销策划ppt范例

Java Arrays.sort源代码解析   Java Arrays中提供了对所有类型的排序。其中主要分为Primitive(8种基本类型)和Object两大类。 基本类型&#xff1a;采用调优的快速排序&#xff1b; 对象类型&#xff1a;采用改进的归并排序。 一、对于基本类型源码分析如下&#xff08;以int…...

外链的论坛网站/软件发布网

ubuntu 8.04 内核升级 dpkg -l 查看安装的文件 首先更新apt-get源 vim /etc/apt/sources.list deb http://old-releases.ubuntu.com/ubuntu/ hardy main restricted universe multiversedeb-src http://old-releases.ubuntu.com/ubuntu/ hardy main restricted universe mu…...

广东外贸网站建设/seo关键词排名网络公司

我们已经比较完整得介绍了有关无锁的概念和使用方法。相对于有锁的方法&#xff0c;使用无锁的方式编程更加考验一个程序员的耐心和智力。但是&#xff0c;无锁带来的好处也是显而易见的&#xff0c;第一&#xff0c;在高并发的情况下&#xff0c;它比有锁的程序拥有更好的性能…...

售卖网站建设实验报告/网络营销出来可以干什么工作

es6 的 import 语法跟 require 不同&#xff0c;而且 import 必须放在文件的最开始&#xff0c;且前面不允许有其他逻辑代码&#xff0c;这和其他所有编程语言风格一致。 import不同与require&#xff0c;它是编译时的&#xff08;require是运行时的&#xff09;&#xff0c;它…...

书画网站模板asp/湖北seo推广

文章目录一、Hadoop目录文件结构二、Hadoop的运行模式三、集群配置规划四、配置文件说明1、默认配置文件2、用户自定义配置文件五、配置集群1、核心配置文件 core-site.xml 2、HDFS配置文件 hdfs-site.xml 3、YARN配置文件 yarn-site.xml 4、MapReduce配置文件 mapred-site…...

微信免费建站/免费线上培训平台

分频代码如下&#xff0c;clk_div传的虽然是4&#xff0c;但其实实现的是2 * (4 1) 分频 timescale 1ns / 1psmodule fre_div (input clk,input rst_n,input[3:0] clk_div,output reg clk_out );reg[3:0] cnt;always(posedge clk or negedge rst_n) beginif(!rst_n) beginclk…...