性能测试面试题汇总
稳定性测试的怎么挑选的接口?
1、频繁使用的接口:选择那些被频繁使用的接口,因为这些接口可能会面临更大的负载和并发访问,从而可能导致性能问题。
2、核心功能接口:选择那些实现系统核心功能的接口,因为这些接口的故障可能会导致整.个系統的故障。
3、外部依赖接口:选择那些与外部系统通信的接口,例如第三方 APl数据库、消息队列等等,因为这些接口的稳定性可能对系统整体性能和可用性产生影响。
4、流量高的接口:选择那些通常会有高流量负载的接口进行测试,这些接口可能会在高峰期经历高负载,而测试它们可以验证系统是否能够在高负载情况下正常运行。
5、关键路径接口:选择那些在系统关键路径上的接口,因为这些接口可能会导致系统性能下降或系统故障。
6、据库交互的接口:选择那些与数据库交互的接口进行测试,这些接口会产生数据库负载。测试这些接口可以确保系统能够稳定地处理数据库交互,而不会出现性能问题。
7、消息队列接口:这些接口允许不同的应用程序或模块之问异步地发送消息。在稳定性测试中,需要验证消息队列接口是否能够处理高并发的消息传递请求。
8、长时问运行的接口:这些接口通常需要较长的处理时间,如长时问查询、批量处理等。这些接口可能会在运行期间出现性能问题或故障。
性能测试中常见的指标有哪些?
1、响应时问 (Response Time):从用户发起请求到收到响应的时间,通常以毫秒为单位。这是衡量系统性能的关键指标之一。
2、吞吐量 (Throughput):单位时间内能够处理的请求数量。通常以每秒钟处理的请求数量(TPS) 来衡量。
3、并发用户数(Concurrency):同时处理的用户数,可以用于确定系统在负载压力下的承载能力。
4、CPU使用率 (CPU Utilization):系统中CPU的占用率。
5、内存使用率 (Memory Utilization) :系统中内存的占用率。如果内存使用率过高,可能会导致系统变慢或崩溃。
6、网络延迟 (Network Latency):发送请求和接收响应之问的时间差。这通常是网络速度和响应时间的重要组成部分。
7、错误率(Error Rate) :处理请求时发生错误的百分比。这对于确定系统是否可靠和稳定非常重要。
8、磁盘使用率 (Disk Utilization) :系统磁盘的占用率。
性能测试如何发现并定位到数据库的问题?
以项目是多个微服务+MysQL数据库为例:可以基于promethues+gratana+mysql_exporter监控mysal数据库性能指标,同时使用skywalking 做mysal的链路监控,如果检测到在数据库层面消耗时间过长,可以结合 profiling 工具分析如下性能指标:
1、连接数:同时连接到MySQL服务器的客户端数量。
2、查询数和查询响应时问:MySQL服务器接收到的查询数量和查询响应时间。
3、缓存命中率:查询在查询缓存中找到的百分比。
4、锁定等待时间:等待锁定的时问长度,包括共享锁和排它锁等待的时问。
5、磁盘使用率:MysQL服务器对磁盘进行读取和写入操作的使用率。
6、内存使用率:MySQL服务器使用的系统内存占总内存的百分比。
7、CPU使用率:MySQL服务器使用的CPU占总CPU 使用率的百分比。
8、慢查询数量和响应时间:查询执行时 间超过指定时间阈值的查询数量和响应时间。
9、错误日志:记录 MySQL服务器发生错误的日志,可以通过分析错误日志来了解MySQL服务器的问题。
10、慢查询日志:记录执行时间超过指定时间阈值的查询的日志,可以通过分析慢查询日志来了解MySQL服务器的查询问题。
以上性能指标出现问题都可能导致系统整体性能下降,借助工具进一步定位是SQL问题、锁定阻塞问题还是索引、表设计问题。
如何开展性能测试?
1、进行性能测试需求调研和准备
在进行性能测试之前,需要先了解测试的目标、需求和限制,以确保测试可以精准地反映实际场景。通常需要了解系统的架构、用户数量、交互类型、使用频率等信息。同时,需要组建性能测试团队并选择适合的测试工具和环境。
2、确定性能测试范国、方法和目标确定测试范围可以帮助测试人员集中精力测试关键场景,而不是无脑地测试每个功能。性能测试方法通常包括负载测试、压力测试、容量测试、稳定性测试等。针对每个测试方法,需要设定相应的性能测试目标,例如响应时间、,吞吐量、并发用户数、资源利用率等。
3、构建业务模型
基于实际的业务场景和用户行为,需要构建业务模型,模拟实际用户在系统中的操作。通过分析系统的访问日志,可以了解用户的行为模式、操作频率、访问路径等信息,从而构建出合适的业务模型。
4、编写性能测试方案
性能测试方案是性能测试的核心,它包括了测试的范围、方法、目标、测试场景、测试数据、测试工具、测试计划和执行流程等内容。根据项目的架构和业务特点,编写出详细的性能测试方案。
5、进行前端页面性能监控及分析
使用 Dynatrace Ajax Edition 等工具,可以对系统的前端页面进行性能监控和分析。通过监控页面的加载时问、资源请求、JavaScript执行等关键指标,可以深入了解前端页面的性能表现,并及时发现潜在的性能问题。
6、实施性能测试
基于 Jmeter、Locust、 Loadrunner等性能测试工具,开发性能测试脚本并设计测试场景,设置测试参数和指标监控,执行性能测试,收集测试数据并进行分析。在测试过程中,需要及时记录测试日志,包括测试结果、性能指标、错误信息等。
7、搭建性能监控平台
使用 Docker、Promethues、Grafana、InfluxDB、 Exporter、Skywalking 等开源工具,可以搭建一个完整的性能监控平台。通过对系统各个组件的监控和分析,可以深入了解系统的性能
8、代码瓶颈定位
如果监控到可能是代码级的瓶颈,可以基于JisualVM、Arthas等监控工具进行代码级监控及瓶颈定位。
9、根据要求生成相应的 《性能测试报告及优化方案》。
性能测试压力上不去的原因有哪些?
性能测试压力无法达到预期值的原因可能有多种,以下是一些常见的原因:
1、脚本设计不合理:脚本使用的语言或者逻辑过于复杂导致压力机出现瓶颈,比如数据加密等操作。
2、资源限制:测试环境的资源限制可能导致无法模拟预期的负载。例如,压力机的CPU、内存或网络带宽可能不足以支持生成所需的负载。
3、被测系统本身性能问题:被测系统本身可能存在性能问题,导致性能测试无法达到预期的负载水平。例如,应用程序中存在性能瓶颈,数据库操作不够高效,代码实现存在死循环、内存泄漏等问题等。
4、数据问题:测试数据的大小、分布和内容可能会影响负载测试的结果。测试数据可能过于简单或过于复杂,导致无法模拟真实的负载。
5、测试工具问题:测试工具可能存在问题,…例如无法正确处理多线程、网络延迟等情况,导致无法生成预期的负载。LoadRunner、Jmeter、Locust相同的用户数压力可能就不一样。
6、网络问题:测试环境与实际生产环境之问的网络差异可能会影响性能测试结果。例如,生产环境可能存在更多的网络延迟、丢包和带宽限制。
7、未考虑实际使用场景:性能测试可能未考虑实际使用场景。例如,测试可能过于 专注于单个功能或单个用户,而实际上需要考虑多个用户和复杂的工作流程。
8、测试过程错误:测试过程可能存在错误,例如测试用例不准确、测试数据不充分、测试环境设置不正确等等,导致无法生成预期的负载。
9、数据库或其他第三方服务的性能问题:如果被测系统依赖于其他服务,比如数据库或第三方服务,那么这些服务的性能问题也可能会影响到被测系统的性能测试结果。
性能面试的主要几个考核问题
可以通过下面的问题考核一下:
1、如何判断系统性能是否存在瓶颈?
2、针对容量场景,如何设计业务模型?
3、压力上不去的原因可能有哪些?
4、性能脚本是否加思考时间?
5、一台压力机可以运行多少线程?
6、性能监控方案是什么设计的?
7、怎么定位内存泄露的问题?
8、针对多个微服务项目如何全链路监控?
9、写过性能测试方案?包含哪些内容?
10、如何判断Linux内存不足?
相关文章:
性能测试面试题汇总
稳定性测试的怎么挑选的接口? 1、频繁使用的接口:选择那些被频繁使用的接口,因为这些接口可能会面临更大的负载和并发访问,从而可能导致性能问题。 2、核心功能接口:选择那些实现系统核心功能的接口,因为这…...
vue权限控制和动态路由
思路 登录:当用户填写完账号和密码后向服务端验证是否正确,验证通过之后,服务端会返回一个token,拿到token之后(我会将这个token存贮到localStore中,保证刷新页面后能记住用户登录状态)…...
利用正则表达式删掉代码中的所有注释-pycharm为例
首先删除注释 打开您想要删除注释的Python文件。 使用快捷键 Ctrl Shift R 打开 "Replace in Files"(在文件中替换)对话框。 在 "Find"(查找)框中输入以下正则表达式,以查找所有行中的注释内容…...
【java基础】内部类、局部内部类、匿名内部类、静态内部类
内部类 内部类就是定义在另一个类中的类。我们使用内部类的原因主要有以下两点 内部类可以对同一个包中的其他类隐藏内部类方法可以访问定义这个类的作用域中的数据,包括原本私有的数据 public class A {class B {} }我们使用内部类可以访问外部类的所有属性&…...
react renderProps学习记录
react renderProps学习记录1.引入2.改一下呢3.再改一下呢4.总结一下如何向组件内部动态传入带内容的结构(标签)?children propsrender props1.引入 上代码: import React, { Component } from react import ./index.css export default class Parent extends Com…...
关于tf.gather函数batch_dims参数用法的理解
关于tf.gather函数batch_dims参数用法的理解0 前言1. 不考虑batch_dims2. 批处理(考虑batch_dims)2.1 batch_dims12.2 batch_dims02.3 batch_dims>22.4 batch_dims再降为12.5 再将axis降为12.6 batch_dims<02.7 batch_dims总结3. 补充4. 参数和返回值5. 其他相关论述6. 附…...
日常操作linux常用命令
cd /mnt/opt/cqstt/logs/stt-erp docker logs -f --tail1000 stt-erp # 查看物理CPU个数 cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l # 查看每个物理CPU中core的个数(即核数) cat /proc/cpuinfo| grep "cpu cores"| uniq # 查看逻辑CPU的…...
【Java集合框架】篇二:Collection接口方法
JDK不提供此接口的任何直接实现类,而是提供更具体的子接口(如:Set和List)去实现。 Collection 接口是 List和Set接口的父接口,该接口里定义的方法既可用于操作 Set 集合,也可用于操作 List 集合。方法如下…...
PHP入门指南:简单易学的语法和丰富的调试工具与安全性最佳实践
PHP是一种非常流行的服务器端编程语言,它被广泛地应用于Web开发中。如果您想学习Web开发,那么PHP是一个非常好的选择。在本文中,我将介绍PHP的一些基础知识,包括语法、变量、函数、数组、数据库连接、调试和安全性等。PHP的语法PH…...
前端面试题--HTML篇
一、src和href的区别src指向外部资源的位置,指向的内容会嵌入到文档中当前标签所在的位置;href指向网络资源的位置,建立和当前元素或当前文档之间的链接。二、对HTML语义化的理解根据内容的结构化,选择合适的标签。优点࿱…...
SpringBoot集成ElasticSearch,实现模糊查询,批量CRUD,排序,分页,高亮
导入elasticsearch依赖在pom.xml里加入如下依赖:<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-elasticsearch</artifactId> </dependency>非常重要:检查依赖版本…...
常用Swagger注解汇总
常用Swagger注解汇总 前言 在实际编写后端代码的过程中,我们可能经常使用到 swagger 注解,但是会用不代表了解,你知道每个注解都有什么属性吗?你都用过这些属性吗?了解它们的作用吗?本文在此带大家总结一下…...
关于 TypeScript 声明文件
declare var 声明全局变量declare function 声明全局方法declare class 声明全局类declare enum 声明全局枚举类型declare namespace 声明(含有子属性的)全局对象interface 和 type 声明全局类型export 导出变量export namespace 导出(含有子…...
SpringBoot学习-原理篇
SpringBoot原理篇springboot技术本身就是为了加速spring程序的开发的,可以大胆的说,springboot技术没有自己的原理层面的设计,仅仅是实现方案进行了改进。将springboot定位成工具,你就不会去想方设法的学习其原理了。就像是将木头…...
目标检测YOLOv5数据集怎么找?
完整的配置-标注-训练-识别在我这篇博客小白YOLOv5全流程-训练实现数字识别_yolov5数字识别_牛大了2022的博客-CSDN博客 模型部分剖析可以看我每周深度学习笔记部分。关于训练的数据集怎么搞很多人问过我,我在这篇文章给大家一点我的经验和建议。 数据集是什么 简…...
安卓短信自动填充踩坑
安卓短信自动填充踩坑 前言 最近弄了个短信自动填充功能,一开始觉得很简单,不就是动态注册个广播接收器去监听短信消息不就可以了吗?结果没这么简单,问题就出在机型的适配上。小米的短信权限、荣耀的短信监听都是坑,…...
【抽象类和接口的区别】
抽象类和接口都是Java中实现多态的机制,它们都是用来约束子类必须要实现的方法。但是它们有以下区别: 实现方式 实现方式:抽象类是一个类,而接口是一个接口。一个类只能继承一个抽象类,但可以实现多个接口。 构造方…...
接口导出文件功能
1.写接口 export function getExport(params) { return fetch({ url: ******.export, method: post, data: params, responseType:blob, }) } 2.编写前端页面 <el-button :loading"exportDisable" :disabled&quo…...
深圳大学计软《面向对象的程序设计》实验9 期中复习
A. 机器人变身(类与对象)【期中模拟】 题目描述 编写一个机器人类,包含属性有机器名、血量、伤害值、防御值、类型和等级。其中血量、伤害和防御和等级、类型相关: 普通型机器人,类型为N,血量、伤害、防…...
python之异步编程
一、异步编程概述 异步编程是一种并发编程的模式,其关注点是通过调度不同任务之间的执行和等待时间,通过减少处理器的闲置时间来达到减少整个程序的执行时间;异步编程跟同步编程模型最大的不同就是其任务的切换,当遇到一个需要等…...
基于算法竞赛的c++编程(28)结构体的进阶应用
结构体的嵌套与复杂数据组织 在C中,结构体可以嵌套使用,形成更复杂的数据结构。例如,可以通过嵌套结构体描述多层级数据关系: struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...
CTF show Web 红包题第六弹
提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框,很难让人不联想到SQL注入,但提示都说了不是SQL注入,所以就不往这方面想了 先查看一下网页源码,发现一段JavaScript代码,有一个关键类ctfs…...
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以? 在 Golang 的面试中,map 类型的使用是一个常见的考点,其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...
Cinnamon修改面板小工具图标
Cinnamon开始菜单-CSDN博客 设置模块都是做好的,比GNOME简单得多! 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...
C# 类和继承(抽象类)
抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...
Ascend NPU上适配Step-Audio模型
1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统,支持多语言对话(如 中文,英文,日语),语音情感(如 开心,悲伤)&#x…...
Element Plus 表单(el-form)中关于正整数输入的校验规则
目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入(联动)2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...
Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)
目录 一、👋🏻前言 二、😈sinx波动的基本原理 三、😈波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、🌊波动优化…...
在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?
uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件,用于在原生应用中加载 HTML 页面: 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...
初探Service服务发现机制
1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能:服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源…...
