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

性能测试及调优

一、性能测试介绍

1、什么叫做性能测试?

(1)通过某些工具或手段来检测软件的某些指标是否达到了要求,这就是性能测试 (2)指通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试

2、性能测试的时间?

在功能测试完成后才能进行性能测试

3、为什么要做性能测试?

(1)评估系统的能力,

(2)识别体系中的弱点

(3)验证稳定性

(4)系统调优

4、性能测试的流程?

(1)性能需求分析 (标准)

(2)性能计划的编写

(3)性能场景的设计

(4)脚本的开发(录制脚本)

(5)性能环境和数据

(6)性能执行

(7)结果分析(是否标准)

(8)性能总结报告

(9)性能调优

5、集合点的概念

集合点的概念:loadrunner中集合点可以设置多个虚拟用户等待到一个点,同时触发一个事务,以达到模拟真实环境下多个用户同时操作实现性能测试的最终目的。jmeter 中使用Synchronizing Timer实现Lr中集合点的功能,模拟多用户并发测试,即多个线程在同一时刻并发请求。

1、线程组右键 -> 定时器 -> Synchronizing Timer 2、参数设置 a. Number of Simulated Users to Group by: 此处填写并发数量 b. Timeout in milliseconds: 超时时间设置 Jmeter默认没有超时时间,如果没有设置,一旦没有达到集结数量的请求系统就一直 等待。 计算超时时间方法参考: 并发数量 * 1000毫秒/ 线程数/在多少时间启动这么多线程 10*1000/(10/10)=10000

定时器作用域: 作用于该定时器之后的所有请求,也就是说定时器实在请求执行前起作用的并发数和线程数一致时,并发启动时间,一定要大于线程组启动,如果小于这个时间,并发数量不准确。 (注意:线程组整理的启动时间单位是秒,定时器里的等待时间是:毫秒 ,哟啊注意单位换算,1秒=1000毫秒)

二.性能调优

(一般开发或测试开发进行调优)

1、硬件上的性能瓶颈:

一般指的是CPU、内存、磁盘I/O 方面的问题,分为服务器硬件瓶颈、网络瓶颈(对局域网可以不考虑)、服务器操作系统瓶颈(参数配置)、中间件瓶颈(参数配置、数据库、web服务器等)、应用瓶颈(SQL 语句、数据库设计、业务逻辑、算法等)。

2、应用软件上的性能瓶颈:

一般指的是应用服务器、web 服务器等应用软件,还包括数据库系统。 例如:中间件weblogic 平台上配置的JDBC连接池的参数设置不合理,造成的瓶颈。

3、应用程序上的性能瓶颈:

一般指的是开发人员新开发出来的应用程序。 例如,程序架构规划不合理,程序本身设计有问题(串行处理、请求的处理线程不够),造成系统在大量用户方位时性能低下而造成的瓶颈。

4、操作系统上的性能瓶颈:

一般指的是windows、UNIX、Linux等操作系统。 例如,在进行性能测试,出现物理内存不足时,虚拟内存设置也不合理,虚拟内存的交换效率就会大大降低,从而导致行为的响应时间大大增加,这时认为操作系统上出现性能瓶颈。

5、网络设备上的性能瓶颈:

一般指的是防火墙、动态负载均衡器、交换机等设备。 例如,在动态负载均衡器上设置了动态分发负载的机制,当发现某个应用服务器上的硬件资源已经到达极限时,动态负载均衡器将后续的交易请求发送到其他负载较轻的应用服务器上。在测试时发现,动态负载均衡器没有起到相应的作用,这时可以认为网络瓶颈。

三.硬件的性能

cpu,内存,磁盘(disk I/O),网络(NETWORK I/0)

1、CPU

定义:

CPU指标主要指的CPU利用率,包括用户态(user)、系统态(sys)、等待态(wait)、空闲态(idle)。

参考标准

CPU 利用率要低于业界警戒值范围之内,即小于或者等于75%;

CPU sys%小于或者等于30%;

CPU wait%小于或者等于5%;

2、内存

定义:

内存是计算机中重要的部件之一,它是与CPU进行沟通的桥梁。计算机中所有程序的运行都是在内存中进行的,因此内存的性能对计算机的影响非常大

参考标准

现在的操作系统为了最大利用内存,在内存中存放了缓存,因此内存利用率100%并不代表内存有瓶颈,衡量系统内存是否有瓶颈主要靠SWAP(与虚拟内存交换)交换空间利用率,一般情况下,SWAP交换空间利用率要低于70%,太多的交换将会引起系统性能低下。

3、磁盘

定义:

定义和解释:磁盘吞吐量简称为Disk Throughput,是指在无磁盘故障的情况下单位时间内通过磁盘的数据量。

参考标准

磁盘指标主要有每秒读写多少兆,磁盘繁忙率,磁盘队列数,平均服务时间,平均等待时间,空间利用率。其中磁盘繁忙率是直接反映磁盘是否有瓶颈的的重要依据,一般情况下,磁盘繁忙率要低于70%。

4、网络

定义:

网络吞吐量简称为Network Throughput,是指在无网络故障的情况下单位时间内通过的网络的数据数量。单位为Byte/s。网络吞吐量指标用于衡量系统对于网络设备或链路传输能力的需求。当网络吞吐量指标接近网络设备或链路最大传输能力时,则需要考虑升级网络设备。

参考标准

网络吞吐量指标主要有每秒有多少兆流量进出,一般情况下不能超过设备或链路最大传输能力的70%。

CPU对数据进行判断以及逻辑处理,本身不能存储数据;这时cpu从内存取数据进行逻辑计算,如果内存没有数据,才会从硬盘读数据到内存,再对数据进行处理

就像人吃饭一样,cpu就是人,内存就是碗,硬盘就是饭锅!

当cpu进程等待,会造成内存开销的增加,内存不够用的时候会用到虚拟内存,导致虚拟内存的增加,这时磁盘IO开销就会增加,系统态sy%提升,cpu开销增加;内存里数据不够用,才用磁盘中取数据。

四.监控性能硬件指标

(服务器指标)

1、top 命令

查看服务器动态进程(cpu、内存、磁盘)

2、free

free命令可以查看系统内存的使用情况,-m参数表示按照兆字节展示。最后两列分别表示用于IO缓存的内存数,和用于文件系统页缓存的内存数

3、df

4、vmstat命令

每行会输出一些系统核心指标,这些指标可以让我们更详细的了解系统状态。后面跟的参数1,表示每秒输出一次统计信息,表头提示了每一列的含义

5、uptime命令

可以快速查看机器的负载情况。在Linux系统中,这些数据表示等待CPU资源的进程和阻塞在不可中断IO进程(进程状态为D)的数量

6、mpstat命令

该命令可以显示每个CPU的占用情况,如果有一个CPU占用率特别高,那么有可能是一个单线程应用程序引起的。

7、iostat命令

r/s, w/s, rkB/s, wkB/s:分别表示每秒读写次数和每秒读写数据量(千字节)。读写量过大,可能会引起性能问题。

8、sar命令

sar命令在这里可以查看网络设备的吞吐率。在排查性能问题时,可以通过网络设备的吞吐量,判断网络设备是否已经饱和。

9、cat /proc/cpuinfo 查看cpu

10、监听器中的插件

@gc - Active Threads Over Timeip 活动线程时间

@gc - AutoStop Listener 自动停止侦听器

@gc - Bytes Throughput Over Timejp 字节吞吐量随时间变化

@gc -Composite Graph 综合图

@gc - Connect Times Over Timejp 连接时间

@gc -Console Status Loggerjp 控制台状态记录器

@gc - DbMon Samples Collectorjp (DbMon Collectorjp样品收集器

@gc -Flexible File Writer 监听器之灵活的文件写入

@gc - Graphs Generatorjip 图形发生器

@gc - Hits per Second 每秒点击次数

@gc -JMXMon Samples Collectorjp (JMXMon样品收集器

@gc - Page Data Extractor 页面数据提取器

@gc - PerfMon Metrics Collectorjip 性能指标收集器

@gc - Response Codes per Secondjip 每秒响应数

@gc - Response Latencies Over Timejip 随时间间隔变化的响应延迟

@gc - Response Times Distributionjip 响应时间分布图

@gc - Response Times Over Timeip 随时间变化的响应时间

@gc - Response Times Percentilesjip 响应时间百分位数

@gc - Response Times vs Threadsjp 响应时间vs线程

@gc - Synthesis Report (filtered) 综合报告(过滤)

@gc - Transaction Throughput vs Threadsjip 整个线程的事务

@gc - Transactions per Second 每秒事务数

http://www.lryc.cn/news/491394.html

相关文章:

  • 实战基于LangChain和ChatGLM私有化部署聊天机器人
  • 利用adb工具安装卸载安卓平板(手机)软件
  • 基于docker进行任意项目灵活发布
  • Datatables:监听行内文本框,进行行内数据修改;计算行总和
  • 对于某些原型或UI软件的个人看法(2024/11)
  • 嵌入式硬件实战提升篇(二)PCB高速板设计 FPGA核心板带DDR3 PCB设计DDR全面解析
  • 亚信安全携手飞书“走近先进” 与保隆科技探索制造业数字化转型
  • 【C++篇】排队的艺术:用生活场景讲解优先级队列的实现
  • VTK的基本概念(一)
  • error LNK2001: 无法解析的外部符号 memcpy strcmp strlen
  • 打造智能扩容新纪元:Kubernetes Custom Metrics深度解析
  • 【K8s】专题十五(4):Kubernetes 网络之 Calico 插件安装、切换网络模式、卸载
  • Unity类银河战士恶魔城学习总结(P141 Finalising ToolTip优化UI显示)
  • c++(入门)
  • 【优选算法】前缀和
  • Spring Bean 的生命周期详解
  • MySQL【知识改变命运】12
  • shell编程(完整版)
  • 数字逻辑(一)——导论
  • 量化交易系统开发-实时行情自动化交易-4.4.做市策略
  • 《线性代数的本质》
  • Gbase8s 允许内置用户创建用户以及创建只读权限用户以及利用角色管理普通用户权限
  • 24/11/25 视觉笔记 深度传感器和手势识别
  • 迄今为止的排序算法总结
  • HTML和CSS 表单、表格练习
  • H5流媒体播放器EasyPlayer.js网页直播/点播播放器如果H.265视频在播放器上播放不流畅,可以考虑的解决方案
  • Http 转 https 中 Nginx 的详细配置过程
  • 【测试工具JMeter篇】JMeter性能测试入门级教程(二)出炉,测试君请各位收藏了!!!
  • Otter 安装流程
  • 一文学会Golang里拼接字符串的6种方式(性能对比)