Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >我所理解的性能测试是什么?

我所理解的性能测试是什么?

作者头像
小小科
发布于 2018-05-02 05:18:39
发布于 2018-05-02 05:18:39
1.3K0
举报
文章被收录于专栏:北京马哥教育北京马哥教育

扯淡首先说明这篇博客是文不对题的。起这个名字想法来源自韩寒的《我所理解的生活》,之前看过一个关于这本书的视频,感觉巨牛X,于是就想写一篇《我所理解的性能测试》。虽然是文不对题的,但我就是想用这个名字,在这个残忍的社会,给自己博客文章起个名字这点权利还是有的。下面我要贴出来的是zee大神的《性能测试面试问题列表》中列出来的性能测试与操作系统方面问题与我自己整理的回答。回答的不一定对,也懒得去改了。就用这些问题与回答来记录我这段时间的努力,来记录我所理解的性能测试吧。性能测试1.如何理解TPS性能指标的一个重要因素。TPS(Transaction Per Second,每秒事物数),单位时间内完成的事物的数量。TPS的计算一般是通过的事物除以时间。TPS是跟测试脚本中事物(Transaction)相关联的。在性能测试工具中,吞吐量也被称之为TPS(Transaction Per Second,每秒事物数)。吞吐量直接体现系统性能的承载能力,是指单位时间内处理的客户请求的数量。其计量单位可以根据需求不同而不同,比如请求数/秒,页面数/秒,业务数/小时(可以说下我们采集项目中吞吐量可以用 解析卡数/秒)。对于交互式应用,用户直接的体验就是“响应时间”,通过“并发用户数”和“响应时间”可以确定系统的性能规划;但对于非交互式应用,用“吞吐量”来描述用户对系统的性能期望可能更加合理。吞吐量作为性能测试的主要关键指标。吞吐量和并发用户数之前存在着一定的联系。在没有性能瓶颈的时候,吞吐量随着虚拟用户数的增加而增加(计算公式为 吞吐量 = (VU个数 * 每个VU发出请求数) / 单位时间)。如果性能遇到瓶颈,吞吐量与VU数理之间就不再符合这个关系。2.如何理解线程调用线程(thread)是”进程”中某个单一顺序的控制流。也被称为轻量进程。线程的好处:1) 创建一个新线程花费的时间少。2).(JAVA中线程具有新的,可运行,运行,等待/阻塞/休眠,死亡等几种状态。)在未阻塞情况下,两个线程(在同一进程中的)的切换时间少。在阻塞情况下,线程间切换将产生上下文切换。3).由于同一个进程内的线程共享内存和文件,所以线程之间互相通信不必调用内核。4) 线程能独立执行,能充分利用和发挥处理机与外围设备并行工作的能力。使用线程可以把占据长时间的程序中的任务放到后台去处理ps:JAVA中可以通过jstack或者jprofiler dump出线程所执行的堆栈信息。3.如何理解响应时间响应时间反映完成某个业务所需要的时间。在性能测试中是通过测试工具的事物函数来完成响应时间的统计。事物函数会记录开始事物和结束事物的时间差,使用Transaction Response Time这个词来说明。响应时间主要包括网络时间,服务器处理时间,网络延迟对于交互式应用,用户直接的体验就是“响应时间”,通过“并发用户数”和“响应时间”可以确定系统的性能规划;对于交互式应用,响应时间出现拐点系统就可能出现瓶颈4.如何理解响应时间,TPS曲线和用户之间的关系随着用户数量的增加,在未出现瓶颈前响应时间保持稳定,TPS值和并发用户数成线性关系,出现瓶颈后响应时间变长,TPS基本保持不变或开始下降。5.在LoadRunner中为何要设置思考时间和pacing?1)Think time,思考时间。可以通过设置思考时间,来模拟真实用户在操作过程中的等待时间。从定义上来看,think time是在iteration内部的某个action中各个步骤的间隔时间。2)Pacing,步调。可以通过设置两次迭代(iteration)之间的间隔时间,来调整各个action之间的步调(或者称之为节奏)。3)pacing和think time都是可以模拟现实世界中的停顿。对于复杂场景,这个停顿要靠pacing来完成。不过,pacing怎么设置才最合适,是需要研究用户行为才能定的。操作系统1.如何判断CPU、内存、磁盘的瓶颈?CPU瓶颈:1) 查看CPU利用率。建议CPU指标如下a) User Time:65%~70%b) System Time:30%~35%c) Idle:0%~5%如果us,sy高于这个指标可以判断CPU有瓶颈使用top查看查看运行队列每个CPU都会维持一个运行队列,理想情况下,调度器会不断让队列中的进程运行。进程不是处在sleep状态就是run able状态。如果CPU过载,就会出现调度器跟不上系统的要求,导致可运行的进程会填满队列。队列愈大,程序执行时间就愈长。“load”用来表示运行队列,用top 命令我们可以看到CPU一分钟,5分钟和15分钟内的运行队列的大小。这个值越大表明系统负荷越大。超过 1.00,那么说明CPU已经超出负荷,交通严重的拥堵。使用top或者uptime查看查看上下文切换每个CPU(或多核CPU中每个核心)在同一时间只能执行一个线程,Linux采用抢占式调度。即为每个线程分配一定的执行时间,当到达执行时间,线程中有IO阻塞或高优先级线程要执行时,Linux将切换执行的线程,在切换时要存储目前线程的执行状态,并恢复要执行的线程状态,这个过程称之为上下文切换。对于java应用,典型的是在进行文件IO操作,网络IO操作,锁等待或线程sleep时,当前线程会进入阻塞或者休眠状态,从而触发上下文切换,上下文切换过多会造成内核占用过多的CPU使用,使得应用的响应速度下降。使用vmstat查看cs结论:检查system的运行队列,以及确定不要超出每个处理器3个可运行状态线程的限制.确定CPU 利用率中user/system比例维持在70/30#p#分页标题#e#当CPU 开销更多的时间在system mode,那就说明已经超负荷并且应该尝试重新调度优先级当I/O 处理得到增长,CPU 范畴的应用处理将受到影响ps:对于JAVA应用,CPU瓶颈可以通过jprofiler监控分析内存瓶颈:1.查看利用率(free)used:已使用多大。free:可用有多少。Shared:多个进程共享的内存总额。Buffers/cached:磁盘缓存的大小。2.查看页交换,swap交换(po,pi,so,si),磁盘IO(vmstat)si: 每秒从交换区写到内存的大小so: 每秒写入交换区的内存大小page in :分页(Page)从磁盘重新回到内存的过程被称作Page-Inpage out : 分页(Page)写入磁盘的过程被称作Page-Out另外在进行页交换的时候,会产生磁盘IO,还需注意bi,boBo 磁盘块页面从内存到文件或交换设备的总额Bi 磁盘块页面从文件或交换设备到内存的总额3.page fault(pidstat -r,sar -B )minflt/s: 每秒次缺页错误次数(minor page faults),次缺页错误次数意即虚拟内存地址映射成物理内存地址产生的page fault次数majflt/s: 每秒主缺页错误次数(major page faults),当虚拟内存地址映射成物理内存地址时,相应的page在swap中,这样的page fault为major page fault,一般在内存使用紧张时产生其中sar -B中fault/s表示每秒钟minflt,majflt的和。结论:监控虚拟内存性能由以下几个部分组成:1.当系统中出现较少的页错误,获得最好的响应时间,是因为memory caches(译注:内存高速缓存)比disk caches更快(译注:磁盘高速缓存).2.较少的空闲内存,是件好事情,那意味着缓存的使用更有效率.除非在不断的写入swap device和disk.3.如果系统不断报告,swap device总是繁忙中,那就意味着内存已经不足,需要升级了.zee:如果用做缓冲区(buff)和快速缓存(Cache)的物理内存不断地增加,而空闲的物理内存(free)不断地减少,证明系统中运行的进程正在不断地消耗物理内存。已经使用的虚拟内存(swpd)不断增加,而且存在着大量的页面交换(si和so),证明物理内存已经不能满足系统需求,系统必须把物理内存的页面交换到磁盘中去。由此可以得到这样的结论:该主机上的物理内存已经不能满足系统运行的需要,内存已成为该系统性能的一个瓶颈。ps:对于java程序,内存瓶颈可以通过heap dump后使用mat分析磁盘瓶颈:iostat查看IO信息。如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈。另外还需要注意iowait这个值,iowait 值高就意味着磁盘缓慢或负载过大。还有不要信任svctm这个字段。监控swap 和系统分区,要确保virtual memory不是文件系统I/O 的瓶颈.ps:磁盘瓶颈可以通过pidstat -d 定位程序2.如何理解CPU、内存、磁盘的关系?这些子系统之间关系是彼此联系,相互彼此依赖的1.对于进程来说,数据是存放在内存中的,进程的运行需要使用CPU,进程读写数据需要跟磁盘打交道。2.当内存不足时需要跟磁盘进行页(page)交换,swap交换,从而产生磁盘IO。po,so释放物理内存,pi,si增加物理内存使用。交换分页的过程需要占用cpu时间。 (内存占用过高)3.当磁盘IO负载过高时,需要监控swap和系统分区,要确保virtual memory不是文件系统I/O 的瓶颈。磁盘的相当慢的,当iowait 增长,表示CPU花费大量的时间在等待磁盘IO,此时CPU Bound的应用处理将受到影响(磁盘IO过高)3.如何理解paging in / paging out ?在Linux内存管理中,主要是通过“调页Paging”和“交换Swapping”来完成上述的内存调度。调页算法是将内存中最近不常使用的页面换到磁盘上,把活动页面保留在内存中供进程使用。交换技术是将整个进程,而不是部分页面,全部交换到磁盘上。分页(Page)写入磁盘的过程被称作Page-Out,分页(Page)从磁盘重新回到内存的过程被称作Page-In。当内核需要一个分页时,但发现此分页不在物理内存中(因为已经被Page-Out了),此时就发生了分页错误(Page Fault)。当系统内核发现可运行内存变少时,就会通过Page-Out来释放一部分物理内存。经管Page-Out不是经常发生,但是如果Page-out频繁不断的发生,直到当内核管理分页的时间超过运行程式的时间时,系统效能会急剧下降。这时的系统已经运行非常慢或进入暂停状态,这种状态亦被称作thrashing(颠簸)。可以通过vmstat -s 查看 paged in/out 数量4.如何监控操作系统的资源?(可用一个操作系统做例子)(把简历上部分内容直接贴出来了,懒的整理了)CPU监控:top(利用率), uptime(运行队列数), vmstat(上下文切换数), jprofile(方法占用cpu时间百分比)内存监控:top, free(利用率), vmstat(page和swap交换), pidstat -r和sar -B(page fault), jmap -heap(堆dump), mat和jprofiler(查看对象)磁盘监控:iostat(%util), top(iowait%), pidstat -d网络监控:netstat(连接数), nethogs(流量), wireshark和tcpdump(抓包)JVM监控:jstat(gc), jmap(堆dump), jstack(线程dump), jprofiler和visualvm(剖析工具)nmon(长时间全局收集数据)5.如何理解上下文切换(context switch)?(可用一个操作系统做例子)每个CPU(或多核CPU中每个核心)在同一时间只能执行一个线程,Linux采用抢占式调度。即为每个线程分配一定的执行时间,当到达执行时间,线程中有IO阻塞或高优先级线程要执行时,Linux将切换执行的线程,在切换时要存储目前线程的执行状态,并恢复要执行的线程状态,这个过程称之为上下文切换。对于java应用,典型的是在进行文件IO操作,网络IO操作,锁等待或线程sleep时,当前线程会进入阻塞或者休眠状态,从而触发上下文切换,上下文切换过多会造成内核占用过多的CPU使用,使得应用的响应速度下降。#p#分页标题#e#vmstat其中cs那一列6.如何理解磁盘IO?(可用一个操作系统做例子)磁盘IO速度是非常慢的,linux内核就是要尽量降低IO内存不足时会进行页交换,产生磁盘IOCPU Bound类型应用,当磁盘IO过多,iowait过大时会影响性能。PS:一句话说出我所理解的性能测试,我现在的回答是——果与因

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2014-07-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 马哥Linux运维 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Linux vmstat 命令详解
vmstat  命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,MEM内存使用,VMSwap虚拟内存交换情况,IO读写情况。
阳光岛主
2019/02/19
2.2K0
Linux vmstat 命令详解
Linux性能测试之性能测试指标详解
原文https://blog.csdn.net/u010521062/article/details/115908166
吾非同
2022/04/11
5.8K0
Linux性能测试之性能测试指标详解
常见Linux调优命令和工具
引言: 应同学的要求,分享些基础的知识。 没有比Linux更基础了,关键问题来了,你真的认真看了和转发了吗? O(∩_∩)O哈哈~ 要实现对Linux的调优,就需要用到一些Linux系统命令和工具来观察与监控系统的性能。下面介绍几个最常用的Linux调优命令和工具。 1. top命令 top命令经常用来监控Linux的系统状态,如CPU、内存的使用情况。下面通过一个运行中的Web服务器的top监控截图,讲述top视图中各种数据的含义,以及视图中各进程(任务)的字段的排序。 top进入视图,如图4.17所示。
大数据和云计算技术
2018/03/08
3.1K0
常见Linux调优命令和工具
性能测试面试问答
1.基于协议。性能测试的对象是网络分布式架构的软件,而网络分布式架构的核心是网络协议 2.多线程。人的大脑是单线程的,电脑的cpu是多线程的。性能测试就是利用多线程的技术模拟多用户去负载 3.模拟真实场景。用户的访问时间,访问频率都不是固定的。
飞天小子
2020/04/02
1.1K0
金三银四加薪季,性能测试面试题了解一波
Hi,大家好,今天依然是金三银四面试系列,如果你想了解之前的面试相关文章可以在文末点击👉「阅读原文」查看更多或者点击以下👇「蓝色字」查看最近文章。 金三银四跳槽季,自动化面试题预热一波 金三银四求职季,接口自动化面试题助攻一波 金三银四季招聘季,APP测试面试题温新一遍 以下分享性能测试相关面试题,欢迎在文末留言补充评论✍️。 一 解释常用的性能指标名称与具体含义 性能测试是通过测试工具模拟多种正常、峰值及异常负载条件来对系统的各项性能指标进行测试。验证软件系统是否能够达到用户提出的性能指标,发现系统中
可可的测试小栈
2021/03/15
5600
Linux服务器性能评估与优化(一)--CPU和负载
性能调优是找出系统瓶颈并消除这些瓶颈的过程。 很多系统管理员认为性能调优仅仅是调整一下内核的参数即可解决问题, 事实上情况并不是这样。 性能调优是实现操作系统的各个子系统之间的平衡性,这些子系统包括:
黄规速
2022/04/14
5.2K0
Linux服务器性能评估与优化(一)--CPU和负载
性能测试监控指标及分析调优
1、CPU,如果存在大量的计算,他们会长时间不间断的占用CPU资源,导致其他资源无法争夺到CPU而响应缓慢,从而带来系统性能问题,例如频繁的FullGC,以及多线程造成的上下文频繁的切换,都会导致CPU繁忙,一般情况下CPU使用率<75%比较合适。 2、内存,Java内存一般是通过jvm内存进行分配的,主要是用jvm中堆内存来存储Java创建的对象。内存的读写速度非常快,但是内存空间又是有限的,当内存空间被占满,对象无法回收时,就会导致内存溢出或内存泄漏。 3、磁盘I/O,磁盘的存储空间要比内存存储空间大很多,但是磁盘的读写速度比内存慢,虽然现在引入SSD固态硬盘,但是还是无法跟内存速度相比。 4、网络,带宽的大小,会对传输数据有很大影响,当并发量增加时,网络很容易就会成为瓶颈。 5、异常,Java程序,抛出异常,要对异常进行捕获,这个过程要消耗性能,如果在高并发的情况下,持续进行异常处理,系统的性能会受影响。 6、数据库,数据库的操作一般涉及磁盘I/O的读写,大量的数据库读写操作,会导致磁盘I/O性能瓶颈,进而导致数据库操作延迟。 7、当在并发编程的时候,经常会用多线程操作同一个资源,这个时候为了保证数据的原子性,就要使用到锁,锁的使用会带来上下文切换,从而带来性能开销,在JDK1.6之后新增了偏向锁、自旋锁、轻量级锁、锁粗化、锁消除。
NeilNiu
2023/03/10
6850
性能工具之linux监控之top、vmstat、iostat复习
Ø d 指定每两次屏幕信息刷新之间的时间间隔。当然用户可以使用s交互命令来改变之。
高楼Zee
2020/02/10
1.6K0
性能测试中关注的指标
关键业务的考核指标,重点关注业务价值评价的标准指标,电商类的下单量、支付量等,股票交易类关注买入、卖出以及账户中资金和持有股票的资金的关系等指标。这部分最好是和团队内BA一起确定,建立一套基于业务价值的监控指标。
Criss@陈磊
2024/06/27
2260
性能测试中关注的指标
后台性能测试不可不知的二三事
某月黑风高之夜,某打车平台上线了一大波(G+)优惠活动,众人纷纷下单。于是乎,该打车平台使用的智能提示服务扛不住直接趴窝了(如下图)。事后,负责智能提示服务开发和运维的有关部门开会后决定:必须对智能提示服务进行一次全面深入的性能摸底,立刻!现在!马上! 那么一大坨问题就迎面而来:对于智能提示这样的后台服务,性能测试过程中应该关心那些指标?这些指标代表什么含义?这些指标的通过标准是什么?下面将为您一一解答。 概述 不同人群关注的性能指标各有侧重。后台服务接口的调用者一般只关心吞吐量、响应时间等外部指标。
腾讯移动品质中心TMQ
2018/02/06
2.9K0
后台性能测试不可不知的二三事
性能测试
随着5G时代的到来,以及万物互联时代的到来,云应用和云服务会越来越多,数据量会指数级增长。尤其是2020年全球疫情的时代意义,会导致各行各业开始上云。从而会催生出极具个性化的各类产品的诞生。
派大星在吗
2021/12/05
4.1K0
测试面试题集-性能测试
性能测试是通过测试工具模拟多种正常、峰值及异常负载条件来对系统的各项性能指标进行测试。验证软件系统是否能够达到用户提出的性能指标,发现系统中存在的性能瓶颈并加以优化。
可可的测试小栈
2020/05/18
1.7K0
测试面试题集-性能测试
Linux系统负载监控-vmstat
查看系统负载 常用命令,其中1表示1秒刷新一次,-S表示单位,M表示MB vmstat 1 -S M
星哥玩云
2022/07/03
1.6K0
Jmeter的性能测试
顾翔老师开发的bugreport2script开源了,希望大家多提建议。文件在https://github.com/xianggu625/bug2testscript,
顾翔
2019/12/12
1.2K0
Jmeter的性能测试
软件测试|性能测试中常用的性能指标有哪些?
一般,我们做性能测试的目标是,在大用户量、数据量的超负荷下,获得服务器运行时的相关数据,从而分析出系统瓶颈,提高系统的稳定性。
霍格沃兹测试开发Muller老师
2023/08/03
1.5K0
Linux vmstat命令详解
vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存、进程、CPU活动进行监控。是对系统的整体情况进行统计,不足之处是无法对某个进程进行深入分析。
用户5807183
2019/08/22
1K0
性能测试之常见术语浅析
对被测系统不断施加压力,直到性能指标超过预期或某项资源使用达到饱和,以验证系统的处理极限,为系统性能调优提供依据;
lyb-geek
2018/07/26
5480
性能测试之常见术语浅析
Java应用之性能测试瓶颈调优
在实际的性能测试中,会遇到各种各样的问题,比如 TPS 压不上去等,导致这种现象的原因有很多,测试人员应配合开发人员进行分析,尽快找出瓶颈所在。
用户4283147
2022/10/27
1.8K0
Java应用之性能测试瓶颈调优
Linux服务器性能评估与优化(三)--磁盘i/o
之前文章《Linux服务器性能评估与优化(一)》太长,阅读不方便,因此拆分成系列博文:
黄规速
2022/04/14
3.6K0
Linux服务器性能评估与优化(三)--磁盘i/o
性能测试-性能测试指标
本文总结接口性能测试中,常见的性能指标概念,查看及通用通过标准 注: 本文只考虑B/S架构
打铁读书郎
2024/04/11
4160
相关推荐
Linux vmstat 命令详解
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档