性能测试-接口调优

一、压测策略

  • 负载测试:系统在不同负载下的性能表现,发现性能拐点,从而找出系统最佳性能
  • 压力测试:评估系统处于或超出预期负载时系统的运行情况,主要关注系统在最大载荷情况下的处理能力
  • 基准测试:通过基础测试得出一个已知的性能表现,当系统软硬件环境发生变化后再进行一次基准测试就可以得出软硬件对性能的影响
  • 配置测试:不断调整软硬件各项配置,系统性能达到最优的最佳配置
  • 稳定性测试:在特定的负载下持续地压测,验证系统能否长期稳定地运行

面试常问:

1、什么是压测策略,它在性能测试的重要性中体现在哪里?

压测策略是指在性能测试过程中,为了模拟用户行为和实际负载,而制定的一组测试方法和规则。它的重要性在于确保测试能够真实反映系统的性能表现,帮助团队发现和解决潜在的性能问题。

2、在jmeter中如何设计压测策略以模拟真实用户行为?

设计压测策略,会考虑实际用户的访问模式、并发量、请求分布等因素。例如,我会使用jmeter线程组和定时器模拟用户办并发请求,通过设置不同请求比例和响应时间分布来模拟真实用户行为。

3、怎么样确认脚本的并发用户数和请求速率

示例:我们之前的仓储系统做了一次活动压测,找了往年的线上数据,当日参加活动的用户为22w,根据线上所有用户的使用综合除以一个工作人的工作时间,算出了并发大概在150左右,根据这个标准进行压测。

 4、当压测过程出现问题发现是策略有问题怎么办?

在压测过程中,如果发现是策略有问题,会先分析问题原因,例如是否为系统瓶颈、代码缺陷或配置问题等。然后我会与团队成员沟通,确定解决方案,并调整压测策略以规避类似问题。同时我会记录并分享压测过程中的经验和教训,以改进未来的性能测试工作。

5、分享一个你曾经成功实施的压测策略

首先,我们与业务团队和技术团队进行了深入的沟通,了解大促期间的用户行为模式预计的流量峰值、关键业务场景等,基于这些信息,我们确定了压测的重点和目标;为了模拟真实环境,我们搭建了与生产环境高度一致的压测环境,包括硬件、网络、应用部署等。同时,我们还设置了监控和日志收集系统,以便实时观察和分析压测过程中的系统表现:根据业务需求,我们编写了多个压测脚本,我们还设计了不同的并发级别和请求速率,以逐步逼近系统的极限在压测执行过程中,我们密切关注系统的响应时间、吞吐量、错误率等指标。当系统出现性能瓶颈或故障时,我们及时记录并分析相关日志,定位问题原因;根据压测过程中发现的问题,我们与技术团队一起进行了详细的分析和讨论,制定了相应的优化方案。例如,针对数据库查询性能瓶颈,我们优化了查询语句和索引|:针对网络延迟问题,我们调整了网络配置和负载均衡策略等:压测结束后,我们整理了详细的压测报告,包括压测过程、数据分析、问题定位、优化建议等。我们将报告提交给业务团队和技术团队,并进行了深入的沟通和反馈。基于压测结果,技术团队对系统进行了进一步的优化和扩容,为大促期间的稳定运行打下了坚实的基础

6、负载测试和压力测试的区别 

  • 负载测试压的是预期用户量下对系统进行正常或高负荷条件下的表现,考验的是系统的稳定性和可伸缩性;
  • 而压力测试压的是对系统超负荷运载下的表现,考验的是系统的健壮性和可拓展性;
  • 二者侧重点不同 

 7、基准测试的基准是怎么来的

这个基准是根据涉及到的相关数据以及设定的度量标准得出的,它为评估被测对象提供了一个明确的可比较的参考点

二、指标监控 

硬件指标

  • CPU
  • Menory(内存)
  • Network I/O(网络)
  • Disks I/O(磁盘)

常问面试问题

1、监控插件安装及配置件jmeter就会进行安装

当脚本在运行过程中,我们需要监控服务器的指标,如:CPU、内存,磁盘容量,网络等,这时候我们就需要在服务器端安装插件,甲骨文官网下载一个jmeter插件管理的jar包,把这个jar包放到meter的lib目录下,然后重启一次jmeter,再进入jmeter内只需要选择我们所需要安装的插

2、服务器端怎么安装插件并监控服务器资源服务器信息?

就拿我们之前做的分布式压测来说,首先看看有几台服务器,在每台服务器上安装一个serveragent,并且启动它,这个接口默认的端口号是4444,它是会自动收集服务器数据的,我们在jmeter找那个创建监控,配置好服务器的IP地址和4444就可以了,然后选择我们需要监控的内容,这样在脚本运行起来的时候就会自动收集并且生成图表

3、你在做压测的过程中会关注哪些指标?

TPS:每秒事务数,这是反映服务器并发处理能力的一个关键指标。它表示的是jmeter测试工具在每秒内能够成功完成的事务数或请求数。TPS值越高,通常说明服务器的处理能力越强

QPS:每秒查询率,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准

吞吐量:表示单位时间内成功传送数据的数量它在压测过程中会受到延迟、丢包、协议消耗等影响

4、什么是事务?

可以理解为一次用户操作,有四大标准属性:原子性、一致性、隔离性、持久性

三、定位瓶颈 

3.1 定位硬件相关指标

  1. CPU高:用top命令查询占用资源利用率最高的进程,根据进程的PID号查询出资源利用率最高的线程,如果查出来是一个Java应用,就可以用JStack看出此线程正在执行的堆栈,看资源消耗在哪个方法上面,就可以去查看源码知道问题所在了(开发看)
  2. 内存高:内存高的问题主要看某个进程占用的内存是否非常大以及是否有大量的swap(虚拟内存交换)
  3. 网络I/O高:网络/O主要考虑的就是传输内容的定位硬件指标相关问题大小,不能超过硬件网络传输的最大值的70%,可以通过压缩减少内容大小,在本地设置缓存以及多次传输的方式来提高网络I/O性能
  4. 磁盘I/O高:减少日志输出、异步或换速度快的硬盘降低繁忙率就好了

3.2 中间件指标

如果硬件指标都没问题的情况下,需要查看中间件的相关的指标,如果这些指标有问题需要深入分析 :

  • 线程池不够:要增加线程,搞清楚为什么线程阻塞
  • 连接池:怎么加连接数,要搞清楚连接为什么释放

3.3 数据相关指标 

如果中间件指标也没有问题 ,需要查看数据相关指标,例如:慢sql、命中率、锁、参数设置

3.4 代码层面优化

以上都没有问题的话,则需要对代码层面优化,做缓存、优化算法、异步同步等

3.5 面试常问问题 

1、jmeter性能测试,如何定位性能瓶颈?

通过分析各种监控数据,如吞吐量、响应时间、资源利用率、sql执行时间等

2、简单说说有哪些常见的性能瓶颈类型?

主要有硬件性能瓶颈如:CPU、内存、网络、磁盘

中间件性能瓶颈:线程池、连接池 

数据库性能瓶颈:锁、慢sql、参数设置、命中率

代码层面优化:缓存、消息队列、异步同步、优化算法

3、在定位性能瓶颈时,你会如何与团队成员协作?

我会定期将测试过程中收集到的数据和分析结果分享给团队成员。这有助于他们了解当前系统的性能状况,以及可能存在的性能瓶颈。通过共享数据,团队成员可以基于共同的信息基础进行讨论和分析,从而更容易达成共识

四、性能调优

4.1 性能调优前后必须进行能力回归测试

4.2 时空转换

时间换空间

  • 改变应用程序本身的数据结构或者数据格式,减少需要储存的数据的大小
  • 想方设法的压缩存在内存中点数据,比如采用某种压缩算法真正的使用的时候再进行解压缩
  • 把一些内存数据,存放到外部的、更加便宜的存储系统里面,需要用的的时候再取出来
  • 以上这些节省内存空间的方法,一般都需要付出时间的代价

空间换时间:

CDN

4.3 预处理

web标准规定了至少两种提前加载的方式:preload/prefetch

4.4 缓存

开发处理

4.5 异步

开发处理

4.6 常见面试问题

1、你对Jmeter性能调优怎么理解?

就是为了让接口处理更多请求,并且请求到响应时间更短,优化系统能力

2、jmeter性能测试中,你会从哪些方面入手进行性能调优

性能调优是一个针对性能测试结果,对系统进行优化的过程。优化的目标可能是提高系统的吞吐量、降低响应时间、减少资源消耗等。性能调优通常涉及多个方面,包括代码优化、数据库优化、网络优化、硬件升级和系统架构调整等

3、你排查出过什么问题,怎么调优的?

之前对我们系统的客户查询进行过了一次压测,发现压测的结果距商我们的预期有着少许差异,我在压测完成后对接口的表格进行了排除,发现该表格内有的常被用来查询的字段并未添加索引,我在为表格添加了索引之后再次进行了压测,发现不仅接口QPS变短了,TPS也达到了业务要求

 免费领取更多软件测试行业相关资料,优秀简历,课程,实战项目等可移步至下方小卡片领取,备注“优快云”。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值