性能测试面试题汇总
稳定性测试的怎么挑选的接口?
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之异步编程
一、异步编程概述 异步编程是一种并发编程的模式,其关注点是通过调度不同任务之间的执行和等待时间,通过减少处理器的闲置时间来达到减少整个程序的执行时间;异步编程跟同步编程模型最大的不同就是其任务的切换,当遇到一个需要等…...
手游刚开服就被攻击怎么办?如何防御DDoS?
开服初期是手游最脆弱的阶段,极易成为DDoS攻击的目标。一旦遭遇攻击,可能导致服务器瘫痪、玩家流失,甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案,帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...
rknn优化教程(二)
文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK,开始写第二篇的内容了。这篇博客主要能写一下: 如何给一些三方库按照xmake方式进行封装,供调用如何按…...
前端倒计时误差!
提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...
Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)
概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...
【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力
引言: 在人工智能快速发展的浪潮中,快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型(LLM)。该模型代表着该领域的重大突破,通过独特方式融合思考与非思考…...
【Go】3、Go语言进阶与依赖管理
前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课,做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程,它的核心机制是 Goroutine 协程、Channel 通道,并基于CSP(Communicating Sequential Processes࿰…...
AI,如何重构理解、匹配与决策?
AI 时代,我们如何理解消费? 作者|王彬 封面|Unplash 人们通过信息理解世界。 曾几何时,PC 与移动互联网重塑了人们的购物路径:信息变得唾手可得,商品决策变得高度依赖内容。 但 AI 时代的来…...
Android第十三次面试总结(四大 组件基础)
Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成,用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机: onCreate() 调用时机:Activity 首次创建时调用。…...
论文阅读:LLM4Drive: A Survey of Large Language Models for Autonomous Driving
地址:LLM4Drive: A Survey of Large Language Models for Autonomous Driving 摘要翻译 自动驾驶技术作为推动交通和城市出行变革的催化剂,正从基于规则的系统向数据驱动策略转变。传统的模块化系统受限于级联模块间的累积误差和缺乏灵活性的预设规则。…...
通过MicroSip配置自己的freeswitch服务器进行调试记录
之前用docker安装的freeswitch的,启动是正常的, 但用下面的Microsip连接不上 主要原因有可能一下几个 1、通过下面命令可以看 [rootlocalhost default]# docker exec -it freeswitch fs_cli -x "sofia status profile internal"Name …...
