性能测试—Linux/Unix操作系统监控

在单用户多任务的操作系统中,或者多用户多任务的操作系统中,系统同时运行多个程序,这些程序的并行运行势必形成对系统资源的竞争使用。因此,操作系统必须能够处理和管理这种并行运行的程序,使之对资源的使用按照良性的顺序进行

进程是一个程序关于某个数据集的一次运行。进程是程序的一次运行活动,是一个动态的概念,而程序是静态的概念,是指令的集合。进程具有动态性和并发性,程序是进程运行所对应的运行代码,一个进程对应于一个程序,一个程序可以同时对应于多个进程。一个进程从创建而产生至撤销而消亡的整个生命周期,可以用一组状态加以刻画。为了便于管理进程,把进程划分为几种状态,分别有三态模型和五态模型。

当处理器不能即时处理进程时,就会出现进程排队的现象,如果出现持续排队的现象就说明CPU当前处于繁忙状态,所以分析CPU是否处于繁忙状态的第一个指标是CPU的队列长度。

进程的三态模型如图9-18所示。

图9-18进程三态模型及其状态转换

按照进程在执行过程中的不同状况,至少可以定义三种不同的进程状态。

一个进程在创建后将处于就绪状态。每个进程在执行过程中,都处于上面三种状态中的某一种状态。同时,在一个进程执行过程中,它的状态将会发生改变。

运行状态的进程将由于出现等待事件而进入等待状态,当等待事件结束之后等待状态的进程将进入就绪状态,而处理器的调度策略又会引起运行状态和就绪状态之间的切换。引起进程状态转换的具体原因如下:

进程的五态模型如图9-19所示。

图9-19进程五态模型及其状态转换

相对于三态模型,五态模型增加以下两种状态:

引起进程状态转换的具体原因如下:

vmstat命令的基本使用方法如下:

vmstatintervalcount

Count指需要输入多少次结果。

例如:vmstat210表示每隔2秒输出一次结果,一共输出10次结果。

下文切换的显著增加,如cs比磁盘I/O和网络信息包速率高得多,这些都应该进一步检查。

分析完成CPU队列值之后需要进一步分析CPU的繁忙程度,分析CPU的繁忙程度主要从以下几个方面分析:

分析了CPU细分的百分比后,接下来应该继续分析CPU密集程序,分析CPU密集程序有两个标准工具,ps命令和top命令。

ps命令是一个灵活的工具,用来识别系统中运行的程序和它们使用的资源,它显示关于系统中进程的统计信息和状态信息,如线程或线程标识、I/O活动、CPU或内存利用情况。

一般使用ps命令需要分析三个可能输出的列:

需要获得最近使用CPU高度密集的用户进程,可以使用以下命令:

ps–ef报告如图9-20所示。

图9-21psau报告

通过top命令也可以获取CPU密集程序,top命令可以动态监控系统资源使用情况。

二、内存监控

VMM在处理虚拟地址空间时,会将虚拟地址空间划分成段,每段的大小是256MB,它是虚拟内存地址空间中一个邻接的部分,数据对象可以映射到该空间。进程对数据的寻址能力按段(或对象)的级别进行管理,所以段既可以在进程间共享,也可以进行专门维护,如进程可以共享代码段但拥有独立和专用的数据段。

虚拟内存段划分成固定大小的单元,把这种单元叫做页,缺省值页面大小为4096字节,但有一些系统也支持大页面,通常只能通过系统调用shmat访问。段中的每页在需要之前可位于内存(RAM)中,或存储在磁盘上,同样,实内存也可以划分成4096字节的页面帧,VMM的角色是管理分配实内存页面帧并且解析程序对虚拟内存页面的引用,这些页面当前不在实内存中或还不存在(例如,当进程第一次引用其数据段的某一页时),在任何给定时刻使用的虚拟内存数量可能比实内存大,所以VMM必须将余量存储在磁盘上。

SWAP又被称为交换分区,它的作用是在物理内存使用完之后,将磁盘空间(也就是SWAP分区)虚拟成内存来使用。它和Windows系统的交换文件作用类似,但是它是一段连续的磁盘空间,并且对用户不可见,但其访问速度远远慢于实内存的访问速度。

Active/inactive:活动和非活动内存,当前被process使用内存为活动内存,已经分配但是未被使用内存为非活动内存。

KernelUsageofMemory:在操作系统过程中,内核也需要使用内存,该值记录内核使用内存的情况。

监控内存使用情况的工具通常有:vmstat和ps。

Vmstat命令总结了系统中所有进程使用的总活动虚拟内存,以及空闲列表上实内存页帧的数量,活动的虚拟内存定义为虚拟内存中实际可以得到的工作段页面的数量。

vmstat210报告如图9-22所示。

图9-22vmstat210报告

从图9-22中到可以看出内存中buffer和cache分配情况,其中free是指空闲的内存,一个页面是实内存4KB的区域,系统维护内存页面的缓冲区,称为空闲列表,当VMM需要空间时可以很方便地访问此空闲列表。一般情况下如果free的值较大时swap的值则显示为零,因为当内存够用时就没有必须使用交换分区了,所以看到swap栏中的si/so两列的值也为零。

vmstat-s报告如图9-23所示。

图9-23vmstat-s报告

该报告详细列出了内存的使用数据,其中页面调进和页面调出的数量代表虚拟内存从页面空间和文件空间调进或调出页面的活动。

如实例psv,报告如图9-24所示。

图9-24psv报告

结果报告中重要列描述如下:

缺页故障引起的页面调进的数目,操作系统把所有I/O归于缺页故障,所以该项主要是I/O量的测量。

进程数据区的虚拟大小(在调页空间),用千字节表示(在其它标志中用SZ来表示),这个数目等于进程可用的工作段页数目的4倍。如果一些工作段页当前被调出,这个数字将大于所使用的实内存量,SIZE包含了私有段的页面和进程的共享库数据段。

进程实内存(驻留集合)的大小,用千字节表示。这个数值等于内存中的工作段页和代码段页数和的4倍,代码段页是为所有当前程序运行的实例所共享的,如果26个ksh进程正在运行,那么只能是ksh可执行程序的任何给定页面的一份副本位于内存中。

文本(共享程序)映像的大小,这是可执行文件的文本区域的大小,可执行程序文本区的页面是只能在用到时带入内存中的,即转移到内存或从内存装入。这个值表明可以装入的文本量的上限,TSIZ的值并不反映实内存的使用情况。

文本驻留集合(实内存)的大小,这个值等于进程可用的代码段页数值的4倍。

由内存中工作段和代码段页和的4倍(即RSS的值),再除以机器实内存的大小(单位为KB),再乘以100,四舍五入到最接近的百分点,这个指表明了进程使用的实内存,它不会夸大一个进程与其它进程共享程序文本的开销。

注意:ps命令并不表明共享内存段或内存映像段消耗的内存,因为许多应用程序使用共享内存或内存映像段。

如果需要获得物理内存和swap交换分区的详细信息可以使用procinfo命令。

三、磁盘监控

在介绍磁盘监控前,先介绍固定磁盘存储管理的性能,固定磁盘存储器的结构层次如图9-25所示。

图9-25固定磁盘存储器的层次结构

每个单独的磁盘驱动器称为一个物理卷(PV),它们各有一个名称,例如/dev/hdisk0,如果物理卷在使用,那么它属于一个卷组(VG),卷组中所有物理卷划分成相同大小(如果卷组包含的物理卷小于4GB,则缺省值是4MB,对于更大的磁盘该值为8MB或更多)的物理分区(PP)。

根据空间分配的用途,每个物理卷可以分成五个区域,根据磁盘驱动器的不同,每个区域中物理分区的数量也不同。在每个卷组中定义一个或多个逻辑卷(LV),每个逻辑卷由一个或多个逻辑分区组成,每个逻辑分区至少对应一个物理分区,如果指定为逻辑卷制作镜像,就需要分配额外的物理分区存储每个逻辑分区的额外副本,虽然逻辑分区是连续编号的,但底层的物理分区不必连续或邻接。

逻辑卷为系统用途提供服务(例如页面调度),但是每个容纳常规系统数据或用户数据或程序的逻辑卷都包含一个单独的日志文件系统(JFS或增强型JFS),每个JFS由页大小(4096字节)块的池组成。当数据要写入某个文件中时,会为这个文件分配一个或多个额外的块,这些块彼此和与先前分配给这个文件的其它块之间可能邻接也可能不邻接。

关于磁盘的监控应该重点考虑以下几方面的内容:

第一:查找当前最活跃的文件、文件系统和逻辑卷

第二:查看使用率最高的物理卷

一般的在对磁盘配置或调整参数做出重要改动之前,需要先对当前的配置和性能进行监控,得到一条评估的基线数据。

iostat53报告如图9-26所示。

图9-26iostat53报告

注意:如果在Linux未发现该命令,那么需要先安装sysstat包,安装命令为rpm–ivhsysstat-7.0.2-3.el5.i386。sysstat包中包括iostat、mpstat、sar和sa四个工具。

如果需要指定磁盘名称,可以使用-d选项。

例如:iostat–dsda1,报告如图9-27所示。

图9-27iostat-dsda1报告

sar命令是用来收集关于系统的统计数据的标准UNIX命令,通过该命的-d选项,可以详细的查看磁盘I/O的统计信息。

例如sar–d33的报告如图9-28所示。

图9-28sar-d33报告

如果需要测试磁盘写能力,使用以下命令

因为/dev/zero是一个伪设备,它只产生空字符流,对它不会产生I/O,所以I/O都会集中在of文件中,of文件只用于写,所以这个命令相当于测试磁盘的写能力。其中300000表示写的次数。

如果需要测试磁盘读能力,使用以下命令

因为/dev/sda1是一个物理分区,对它的读取会产生I/O,/dev/null是伪设备,相当于黑洞,of到该设备不会产生I/O,所以,这个命令的I/O只发生在/dev/sdb1上,也相当于测试磁盘的读能力。其中300000表示读的次数。

如果需要测试磁盘同时读写能力,使用以下命令

这个命令下,一个是物理分区,一个是实际的文件,对它们的读写都会产生I/O(对/dev/sda1是读,对/test1.dbf是写),假设他们都在一个磁盘中,这个命令就相当于测试磁盘的同时读写能力。其中300000表示读的次数。

一般来说,高的%iowait表明系统存在一个应用程序问题、缺少内存问题或低效的I/O子系统配置,例如,应用程序的问题可能是由于许多I/O请求,而不是处理许多数据。理解I/O瓶颈并且要清楚解决瓶颈问题的关键在于提高I/O子系统的效率。磁盘的灵敏度可以以下几种方式出现,并具有不同的解决方法,一些典型的解决方案如下:

四、网络监控

如果系统的性能出现问题了,但发现其它指标并没任何问题,那么这很可能是由于网络原因导致系统的性能出现问题。如何判断是否是由于网络的原因导致系统性能受影响呢一个简单的办法是比较涉及网络的操作和与网络无关的操作,如果正在运行的程序在进行一定距离的远程读取和写入,而且运行很慢,但其它的操作是正常的,那这很可能是网络问题造成的,一些潜在的网络瓶颈可能由以下因素造成:

ping命令,在下面这些情况下ping命令有帮助:

关于ping命令常用参数项如下:

以10ms的间歇发送信息包或者在每次回应之后立即发送,只有根用户才可以使用这个参数项。

如图9-29所示的实例。

图9-29ping命令报告

注意:ping命令在网络上运行可能很困难,应该小心使用,连续执行ping命令只能由根用户操作。

如果测试过程中发送大量的信息包到目的地址,需要考虑如下几个方面的内容:

Netstat命令可以用来显示网络的状态,一般来说,它是用来于故障识别作为性能评定用的,通常该命令可以确定网络上的流量,从而可以确定性能故障是否由于网络阻塞所引起。netstat命令显示关于配置网络接上的流量,主要包括以下几方面:

netstat命令格式如下:

图9-30netstat-in命令报告

RX和TX这两列表示的是已准确无误地收发了多少数据包(RX-OK/TX-OK)、产生了多少错误(RX-ERR/TX-ERR)、丢弃了多少包(RX-DRP/TX-DRP),由于误差而遗失了多少包(RX-OVR/TX-OVR);最后一列展示的是为这个接口设置的标记,在利用ifconfig显示接口设置时,这些标记都采用一个字母。说明如下:

图9-31netstat-nr报告

输出结果中,第二列展示的是路由条目所指的网关,如果没有使用网关,就会出现一个星号(*)或0.0.0.0;第三列展示路由的概述,在为具体的IP地址找出最恰当的路由时,内核将查看路由表内的所有条目,在对找到的路由和目标路由比较之前,将对IP地址和genmask进行按位“和”计算;第四列显示了不同的标记,这些标记的说明如下:

Flags:显示标记信息,常用标记如下:

如果需要显示活动或被动套接字的信息,可使用选项-t、-u、-w和-x,其分别表示TCP、UDP、RAW和UNIX套接字连接。如果还需要显示出等待连接(也就是说处于监听模式)的套接字,可以使用-a标记,这样就能得到一份服务器清单,当前所有运行于系统中的所有服务器都会列入其中。

图9-32netstat-nr报告

本章主要讲解了关于“性能测试—Linux/Unix操作系统监控”的内容,大家喜欢的话可以每天来这里和小编一起学习涨薪技能哦。(笔芯)

THE END
1.大厂性能测试监控指标及分析调优指南其他实例文章在本文中,我们讨论了大厂性能测试监控指标及分析调优流程。我们介绍了常见的监控指标,如响应时间、并发用户数、系统吞吐量、错误率、内存占用率和CPU占用率。然后,我们展示了一个使用Python语言编写的性能测试监控指标及分析调优流程示例,包括数据收集、数据分析、优化方案制定和实施和验证等步骤。 http://www.shili8.cn/article/detail_20002682395.html
2.Ruby应用监控:性能监控与分析开发者可以选择多种性能监控工具,例如New Relic、Scout、Datadog等,这些工具可以帮助开发者实时监测Ruby应用程序的性能指标,包括响应时间、错误率、吞吐量等。 性能指标 响应时间 响应时间是指客户端发起请求到服务器返回响应所花费的时间。通过监控响应时间,可以了解应用的实时性能表现。 https://www.jianshu.com/p/4aeb6197dab3
3.JAVAbenchmark性能测试mob64ca140d2323的技术博客什么是性能测试 系统在特定负载的情况下,相应时间和稳定性的表现情况。 1.系统:自己开发的程序,测试反映出我们开发程序的质量好坏。 2.负载:单位时间内客户请求的数量。 3.相应时间:客户从发起请求到接收到成功或失败响应的时间。 4.稳定性:指任意时间,响应时间的波动情况,波动越小的系统越好。 https://blog.51cto.com/u_16213670/12846888
4.服务器性能如何评估,关键指标与最佳实践是什么?处理能力:服务器的处理能力是衡量其性能的关键指标之一,高性能的服务器通常配备多核处理器和大容量内存,能够快速处理大量并发请求,阿里云服务器采用了高性能的硬件设备,具备快速的计算和存储能力,能够满足各种类型的应用需求。 存储能力:存储设备的读写速度直接影响服务器的响应时间,SSD(固态硬盘)相比传统HDD(机械硬盘)https://shuyeidc.com/wp/18024.html
5.一篇文章认识性能测试响应时间通过在被测系统上不断增加压力,直到性能指标,例如“响应时间”超过预定指标或者某种资源使用已经达到饱和状态。 特点: (1) 主要目的是找到系统处理能力的极限。 (2) 需要在给定的测试环境下进行,通常也需要考虑被测系统的业务压力量和典型场景,使得测试结果具有业务上的意义。 https://blog.csdn.net/yjt2045263063/article/details/138579861
6.压力测试核心性能指标及行业标准腾讯云开发者社区在做压力测试时,新手测试人员常常在看报告时倍感压力:这么多性能测试指标分别是什么意思,应该达到什么标准? 本文将结合实际压测报告,帮助您快速理解压测时的主要性能指标,了解如何解读该指标以及通常情况下应该达到的标准。 优测在线压测平台报告示例 指标1:响应时间 https://cloud.tencent.com/developer/article/2304981
7.性能测试的六大性能指标是什么下面分别对这六大性能指标进行详细介绍: 1、响应时间(Response Time) 响应时间是指从客户端发送请求到接收到服务器响应所需的时间,它是衡量系统性能的一个重要指标,通常以毫秒(ms)为单位,响应时间越短,用户体验越好。 2、吞吐量(Throughput) 吞吐量是指在单位时间内系统处理的请求数量,它反映了系统的处理能力,通常https://www.kdun.com/ask/417264.html
8.性能测试中的响应时间指标解析本文将详细解析性能测试中的响应时间指标,并探讨其在测试过程中的作用和意义。 一、响应时间的定义 响应时间是指系统在接收到一个请求后,完成该请求并返回结果的时间。它包括从请求发送出去到接收到响应的整个过程所消耗的时间。在性能测试中,通常使用平均响应时间来衡量系统的性能。 二、响应时间指标的解析 1.平均https://wenku.baidu.com/view/258ff253350cba1aa8114431b90d6c85ed3a88d4.html
9.性能测试中的重要指标:响应时间并发数和每秒事务数在开发和维护任何一个应用系统时,性能测试都是至关重要的一环。性能测试的目标是确保系统可以在各种负载下顺利、有效地运行。在性能测试中,响应 时间(Response Time)、并发数(Concurrency)和每秒事务数(Transactions Per Second,TPS)都是非常重要的指标。这三个指标为我们提供了系统在特定负载下表现的深入理解。那么,https://cloud.tencent.cn/developer/article/2311564
10.软件性能测试中的性能指标软件性能测试中的性能指标(响应时间、吞吐量、并发用户数、CPU利用率、内存使用率及网络带宽等): 1. 响应时间 响应时间是指系统从接收请求到返回结果所需要的时间,是衡量系统性能的重要指标之一。响应时间短,说明系统性能好,用户体验好。 2. 吞吐量 吞吐量是指系统在单位时间内可以处理的请求数量,也是衡量系统性能https://cml244.51sole.com/companynewsdetail_261060058.htm
11.软件测试5个常用的性能指标是什么?推荐好文响应时间是指从客户端发送请求到接收到服务器响应之间的时间间隔。它是用户最直接感知到的性能指标之一,直接影响用户体验。响应时间越短,用户体验越好。 重要性:对于在线服务而言,响应时间的长短直接关系到用户的满意度。例如,电商网站的商品详情页加载时间过长,可能会导致用户放弃购买。 https://m.kexintest.com/sys-nd/2676.html
12.web前端性能响应时间指的是什么?Worktile社区优化性能可以提高用户体验、减少页面加载时间,提高网站的访问速度和响应能力。 赞同 8个月前 0条评论 不及物动词 这个人很懒,什么都没有留下~ 评论 Web前端性能响应时间指的是在Web应用中,由用户发起请求后,服务器对该请求进行处理和返回所需资源的时间。它通常包括以下几个方面的时间: DNS解析时间:将域名https://worktile.com/kb/ask/798222.html
13.性能测试的几个指标,你完全了解吗?记录下性能测试常用的几个指标,性能测试其实就是检查各项指标是否符合要求。 性能测试核心指标: 吞吐量 响应时间(Rsponse Time) 并发处理能力 资源占用能力 测试中的时间占比: 40%——性能测试分析 30%——测试执行 30%——测试结果分析 而全链路监控就是只要和系统相关的全部需要监控到。 http://www.51testing.com/html/47/n-7794047.html
14.性能测试主要测什么性能测试的指标有哪些性能测试是软件测试的一个重要组成部分,主要用于评估软件系统在各种负载条件下的性能表现。性能测试的目的是确保软件系统在实际运行环境中能够满足用户的需求和期望。本文将详细介绍性能测试的主要测试内容和指标。 性能测试的主要测试内容 响应时间:评估系统在特定操作下的反应速度,通常以毫秒为单位。 https://www.elecfans.com/d/2993070.html
15.网站性能测试指标及网站压力测试鹿呦呦1. 一般衡量网站性能有哪些指标? 性能指标主要有响应时间,吞吐量,并发量,性能计数器。 1)响应时间 指应用执行一个操作需要的时间,即从发出请求到最后收到响应数据所需要的时间。 系统常用操作响应时间表 实践中通常采用的办法是重复请求,比如一个请求操作重复执行1万次,测试一万次执行的总响应时间之和,然后除以1万https://www.cnblogs.com/sunshineliulu/p/7509810.html
16.性能测试包括哪些方面?那么,什么是性能测试?如何衡量系统性能?系统响应时间是怎么计算的?如何进行性能调优?带着这些问题,https://www.zhihu.com/question/486203711/answer/2628810951