川石教育
全国咨询热线:136-9172-9932
  1. 首页 > 资讯与干货 > IT资讯

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

作者:川石学院 日期:2021-06-17 13:49:48 点击数:

  其实软件测试的小伙伴应该都知道,不管是Windows操作系统还是Linux/Unix操作系统关于系统资源的监控都主要是CPU、内存、磁盘,但LoadRunner对Linux/Unix操作系统资源监控做的并不好,所以一般情况下不使用LoadRunner对Linux/Unix操作系统进行资源监控,一般情况下有两种方法对Linux/Unix操作系统进行监控:一是使用相关命令;二是使用监控工具nmon。

性能测试—Linux/Unix操作系统监控(图1)

  一、CPU监控

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

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

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

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

性能测试—Linux/Unix操作系统监控(图2)

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

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

  •   1) 运行态:占有处理器正在运行。

  •   2) 就绪态:具备运行条件,等待系统分配处理器以便运行。

  •   3) 等待态(阻塞态):不具备运行条件,正在等待某个事件的完成。

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

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

  •   1) 运行态→等待态:等待使用资源,如等待外设传输;等待人工干预。

  •   2) 等待态→就绪态:资源得到满足,如外设传输结束;人工干预完成。

  •   3) 运行态→就绪态:运行时间片到后出现有更高优先权进程。

  •   4) 就绪态→运行态:CPU空闲时选择一个就绪进程。

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

性能测试—Linux/Unix操作系统监控(图3)

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

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

  •   挂起就绪态:表明进程具备运行条件但目前在二级存储器中,当它被对换到主存才能被调度执行。

  •   挂起等待态:表明进程正在等待某一个事件且在二级存储器中。

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

  •   1) 等待→挂起等待:没有进程处于就绪状态或就绪进程要求更多内存资源时,发生这种转换,以提交新进程或运行就绪进程;

  •   2) 就绪→挂起就绪:当有高优先级阻塞(系统认为会很快就绪的)进程和低优先级就绪进程时,系统会选择挂起低优先级就绪进程;

  •   3) 运行→挂起就绪:对抢占式系统,当有高优先级阻塞挂起进程因事件出现而进入就绪挂起时,系统可能会把运行进程转到挂起就绪状态;

  •   4) 挂起就绪→就绪:没有就绪进程或挂起就绪进程优先级高于就绪进程时,发生转换;

  •   5) 挂起等待→等待:当一个进程释放足够内存时,系统会把一个高优先级挂起阻塞(系统认为会很快出现所等待的事件)进程转换为等待状态;

  为了了解系统当前进程队列状态信息,可以使用vmstat命令来查看进程队列信息,该命令可迅速提供关于各种系统资源和与之相关的性能问题的简要信息,vmstat命令报告关于内核线程的统计信息,包括处于运行和等待队列中的、内存中的、页面调度中的、磁盘中的、中断、系统调用、上下文切换和CPU活动的内核线程。该报告显示CPU活动的详细信息:用户方式、系统方式、空闲时间和等待磁盘I/O的百分比。

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

  vmstat interval count

  interval指每隔多长时间输出一次结果。

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

  注意:如果使用vmstat命令时不带任何选项,或者只带有间隔时间和任意的计数参数,例如vmstat 2 10,那么vmstat报告中的第一行信息为自系统重新引导以来的平均值。

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

性能测试—Linux/Unix操作系统监控(图4)

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

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

  •   -us

  us列显示用户方式下所花费CPU时间百分比,UNIX进程可以在用户方式下执行,也可以在系统(内核)方式下执行,当在用户方式下时,进程在它自己的应用程序代码中执行,不需要内核资源来进行计算、管理内存或设置变量。

  •   -sy

  sy列详细描述了CPU在系统方式下执行一个进程所花时间百分比,这包括内核进程(kporcs)和其它需要访问内核资源的进程所消耗的CPU资源,如果一个进程需要内核资源,它必须执行一个系统调用,并需要切换到系统方式,从而使用资源变的可用。例如,对一个文件的读或写操作需要内核资源来打开文件、寻找特定的位置,以及读或写数据,除非使用内存映射文件。

  •   -id

  id列显示了没有使用本地磁盘I/O时CPU空闲或等待的时间百分比。如果没有线程可以执行(运行队列为空),系统会分派一个叫wait线程,也称为idle kproc。在一个SMP系统中,每个处理器都有一个wait线程可以分派。

  •   -wa

  wa列详细显示了暂挂本地磁盘I/O和NFS加载的磁盘的CPU空闲百分比。如果在wait运行时至少有一个未完成的磁盘I/O,该时间就归为I/O等待时间,除非进程使用异常I/O,否则对磁盘的I/O请求会导致调用的进程阻塞(或睡眠),直到请求完成为止。一旦进程的I/O请求完成,该进程就放入运行队列中,如果I/O很快完成,该进程可以使用更多的CPU时间,如果wa的值超过25%说明磁盘子系统可能没有被正确平衡,或者这也可能是磁盘密集工作负载的结果。

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

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

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

  C 进程近来使用CPU的时间;

  TIME 从进程启动以来使用CPU的总时间(以分钟和秒为单位);

  %CPU 从进程启动以来使用CPU的总时间除以线程启动后所经历的时间,这是度量程序对CPU依赖程度的一种方法。

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

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

性能测试—Linux/Unix操作系统监控(图5)

  图9-21 ps au报告

  %CPU是自从进程启动以来分配给该进程的CPU时间百分比,它的计算公式如下:

  (进程CPU时间/进程持续时间)*100

  例如:假设有两个进程,进程A启动并运行5秒钟,但并不结束,然后启动进程B并运行5秒钟,但并不结束,此时使用ps命令显示进程A的%CPU值为50%(经历10秒,CPU使用时间为5秒),进程B为100%(经历5秒钟,CPU时间为5秒钟)。

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

性能测试—Linux/Unix操作系统监控(图6)

  关于CPU密集信息主要关注CPU的使用信息即可,并且top会按CPU使用率的降序排序,CPU使用率最高的排在最前面,即CPU密集程序排在最前面。

  二、内存监控

  在分析内存监控技术之前,首先需要了解一些内存相关的概念和内存分析的原理,通常所以说的内存都是物理层面的内存,但是操作系统要是使用这些内存就需要分页(pages),将内存分成一页一页的,这就是虚拟内存(VMM虚拟内存管理器)的概念。

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

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

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

  Buffers/cache: cache是将最近使用过的文件放在内存中,下次需要访问的时候就直接读内存中的内容,而不需要再次访问硬盘。这样就提高了应用程序的效率。Buffers是指当应用程序需要写数据到磁盘时,耗时会比较长,系统让这些数据暂时保存在内存中,程序继续执行其它操作。后续的一些时间点,把内存上的数据写到磁盘上。

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

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

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

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

  当确定内存是否短缺或者是需要进行某种内存调整时,在一组时间间隔里输入vmstat命令,检查结果报告中的pi和po列,这两列表明了每秒调页空间页面调入的数量和每秒调页空间页面调出的数量。如果这些值经常为非零值,说明可能存在内存瓶颈,偶尔出现非零值不用在意,因为页面调度是虚拟内存的主要原理。

  vmstat 2 10报告如图9-22所示。  

性能测试—Linux/Unix操作系统监控(图7)

  图9-22 vmstat 2 10报告

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

  •   si:The rate of memory (in KB/s) that has been swapped in from disk during the last sample。自上次取样以来从磁盘交换进来内存比特率。

  •   so: The rate of memory (in KB/s) that has been swapped out to disk during the last sample。自上次取样以来交换到磁盘的内存比特率。

  •   vmstat –s命令向标准输出发送摘要报告,该报告从系统初始化开始,以绝对计数表示,而不是基于某个时间间隔。在性能测试过程中在负载测试之前先使用该命令保存一份报告,等负载测试完成后再使用该命令监控,并将保存监控结果,比较这两份报告的差异。

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

性能测试—Linux/Unix操作系统监控(图8)

  图9-23 vmstat -s报告

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

  使用ps命令也可以确定内存使用情况,通过ps命令可以监视个别进程对内存的使用,ps v PID命令为个别进程提供了最全面的内存相关统计信息的报告,主要报告的内容包括以下几个方面:

  •   缺页故障;

  •   工作段已经达到的大小;

  •   内存中工作段和代码段的大小;

  •   文本段的大小;

  •   驻留集的大小;

  •   进程合作的实内存百分比;

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

性能测试—Linux/Unix操作系统监控(图9)

  图9-24 ps v报告

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

  •   -PGIN

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

  •   -SIZE

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

  •   -RSS

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

  •   -TSIZ

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

  •   -TRS

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

  •   %MEM

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

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

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

性能测试—Linux/Unix操作系统监控(图10)

  三、磁盘监控

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

性能测试—Linux/Unix操作系统监控(图11)

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

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

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

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

  图9-25中显示了一个文件系统中可能发生的糟糕情况,这个文件系统已经使用了很长时间且没有重新组织过,文件/op/filename物理记录在很多块上,这些块在物理位置上相互远离,不是邻接的,顺序读取这个文件将导致许多费时的寻道操作。虽然操作系统的文件在概念上是一个顺序且邻接的字节字符串,但物理实现可能非常不同,在一个文件系统中对逻辑卷的多次扩展和分配/释放/再分配活动可能出现磁盘分段,当一个文件系统的可用空间由大量小块空间组成,那么就会出现碎片,就不可能在邻接的块中写出新的文件。

  在高度碎片化的文件系统中访问文件可能导致大量的寻道操作和较长的I/O响应时间(寻道等待时间决定I/O响应时间),例如,如果顺序访问文件,那么由大量广泛分散的小块组成的文件布局比文件块紧密相连的布局需要更长的寻道时间,当文件缓存在内存中时,文件布局对于I/O性能的影响减小,在操作系统中打开一个文件时,它被映射到虚拟内存中一个永久数据段,这个段代表该文件的虚拟缓冲区,文件的块直接映射到段的页面中,VMM管理段页面,根据需要读取文件块到段页面中(当它们被访问时)。有几种环境会导致VMM将一页写回到磁盘上文件中相应的块,但如果某块最近已经被访问,VMM通常会在内存中保留该页,因此,频繁访问的页倾向于在内存中停留较长时间,所以不需要物理磁盘访问就可以满足对相应块的逻辑文件访问,在某些地方,用户或系统管理员可以选择在逻辑卷中重新组织文件布局以及在物理卷中重新组织逻辑卷布局,从而减少磁盘碎片以及更均匀地分配总的I/O负载。

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

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

  •   a) “热”文件系统是定位在一个物理驱动器上还是分散在多个物理驱动器上;

  •   b) 调页空间是否支配磁盘应用?

  •   c) 是否有足够的内存来高速缓存那些由正在运行进程使用的文件页面?

  •   d) 应用程序是否执行许多同步(非高速缓存)的文件I/O?

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

  第三:测试磁盘读写时间

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

  在系统处于工作负载高峰时期或者运行一个关键应用程序时,可以使用带间隔时间参数的iostat命令来开始评估。

  iostat 5 3报告如图9-26所示。  

性能测试—Linux/Unix操作系统监控(图12)

  图9-26 iostat 5 3报告

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

  关于CPU统计信息列(%usr、%sys、%idle和%iowait)提供了CPU使用的情况,该信息也在vmstat命令输出信息中存在,其对应的列名为us、sy、id和wa。在运行一个应用程序的系统上,I/O等待时间的高百分比可能与工作负载有关,在具有很多进程的系统上,一些可能在运行,而另一些可能在等待I/O,在这种情况下,%iowait可能很小或者为零,因为正在运行的进程“隐藏”了一些等待时间,但是%iowait并不代表磁盘可能不存在瓶颈。

       如果iostat命令表明CPU受限的情况不存在,并且%iowait时间大于20%,则可能出现I/O或磁盘受限情况,这一情况可能在缺少实内存的情况下由过多调页产生,也可能是由于不平衡的磁盘负载、碎片数据或应用模式而产生,对一个不平衡负载来说,同样的iostat报告提供了必要的信息,但是有关文件系统或逻辑卷,即逻辑资源来说,必须有使用诸如filemon或fileplace工具来获取信息。

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

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

性能测试—Linux/Unix操作系统监控(图13)

  图9-27 iostat -d sda1报告

  •   -tps

  •   表示每秒钟物理磁盘传送的次数,一次传送是从设备驱动程序到物理磁盘的一次I/O处理请求,多重逻辑请求可以组合成单一的磁盘I/O请求,传送的大小是不确定的。

  •   -Blk_read/s

  •   显示在测量间隔中每秒钟从物理卷中读取的数据量(以KB/s为单位)。

  •   -Blk_wrtn/s

  •   显示在测量间隔中每秒写入物理卷的数据量(以KB/s为单位)。

  •   -Blk_read

  •   显示在测量间隔中总的从物理卷中读取的数据量(以KB为单位)。

  •   -Blk_wrtn

  •   显示在测量间隔中总的写入物理卷的数据量(以KB为单位)。

  使用vmstat命令也可以监控磁盘的性能,关于vmstat命令的使用在cpu章节中进行了详细的介绍,这里就不详细介绍了,关于vmstat命令输入报告中需要重点关注in列的内容,in列的内容表示评估间隔中(每秒)发生的硬件或设备中断的次数,中断的示例为磁盘请求完成和10毫秒的时钟中断,即一秒钟发生100次中断。

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

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

性能测试—Linux/Unix操作系统监控(图14)

  图9-28 sar -d 3 3报告

  •   %busy

  •   服务传送请求时,时间设备繁忙程度。

  •   avque

  那段时间内所有从适配器到设备的未完成请求的平均数,可能有附加的I/O操作在设置驱动程序队列中,如果存在瓶颈,这个数字将是一个很好的指示符。

  •   r+w/s

  •   进出设备的读/写传送次数,这同iostat命令中的tps列内容一致。

  •   blks/s

  •   以512字节为单位传送的字节数。

  •   Avwait

  •   事物等候服务的平均次数(队列长度),传送请求在队列中空等候的平均时间(以毫秒为单位)。

  •   avserv

  •   平均每次搜索的毫秒数,设备服务每次传送请求的平均时间(包括搜索时间、转动等待时间和数据传送时间)(以毫秒为单位)。

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

  •   time dd if=/dev/zero of=/test.dbfbs=8k count=300000

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

性能测试—Linux/Unix操作系统监控(图15)

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

  •   time ddif=/dev/sda1 of=/dev/null bs=8kcount=300000

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

性能测试—Linux/Unix操作系统监控(图16)

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

  •   time dd if=/dev/sda1 of=/test1.dbf bs=8kcount=300000

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

性能测试—Linux/Unix操作系统监控(图17)

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

  •   限制在特定的物理磁盘上活动逻辑卷和文件系统的数目,该方法是为了在所有的物理磁盘驱动器中平衡文件I/O;

  •   在多个物理磁盘间展开逻辑卷,该方法在当有一些不同的文件被存取时特别有用;

  •   为一个卷组创建多个Journaled文件系统(JFS)日志并且把它们分配到特定的文件系统中(最好在快速写高速缓存驱动器中),这对应用程序创建、删除或者修改大量文件特别是临时文件来说十分有用;

  •   如果iostat命令的输出结果表明负载的I/O活动没有被均衡地分配到系统磁盘驱动器中,并且一个或多个磁盘驱动器的使用率经常在70-80之间或更高,就得考虑重组文件系统,例如备份和恢复文件系统以便减少碎片,碎片将引起驱动器过多地搜索并且可能产生大部分响应时间过长;

  •   如果有迹象表明一小部分文件被一次又一次地读取,可以考虑附加的实存是否允许那些文件更加有效地缓存;

  •   如果负载的存取模式是随机占主导地位,可以考虑增加磁盘并把将那些随机存取的文件分布到更多更好多的磁盘中;

  •   如果负载的存取模式是顺序占主导地位并且涉及多个磁盘驱动器,可以考虑增加一个或多个磁盘适配器,也可以适当地考虑构建一个条带状逻辑卷来适应大型并且性能关键的顺序文件;

  •   使用快速写高速缓存设备;

  •   使用异步I/O;

  四、网络监控

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

  •   客户端网络接口;

  •   网络带宽;

  •   网络拓扑结构;

  •   服务器端网络接口;

  •   服务器CPU负载;

  •   服务器存储器使用状态;

  •   服务器带宽;

  •   配置效率低下;

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

  •   确定网络的状态和各种外部主机;

  •   跟踪并隔离硬件和软件故障;

  •   对网络的检测、测定和管理;

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

  •   -c

  •   指定了信息包数,如果有IP记录参数,那么这个参数也有可用的,可以捕捉到ping信息包的最小值。

  •   -s

  •   指定信息包的长度,可以使用这个参数项来检查分段和重新组合。

  •   -f

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

  如图9-29所示的实例。  

性能测试—Linux/Unix操作系统监控(图18)

  图9-29 ping命令报告

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

  在上面的这个例子中,1秒钟发送了1000个信息包,这个命令使用了IP和网络控制信息协议(ICMP)因而没有涉及到任何传输协议(UDP/TCP)和应用程序,测到的数据,比如往返时间,不会影响到总体的性能特征。

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

  •   发送信息包对系统来说,增加了负载;

  •   使用netstat –i命令可以在试验过程中监测网络接口的状态,通过查看0errs的输出可以发现系统在发送过程中删除信息包的信息;

  •   同时还需要监控其它的资源,如mbuf和发送/接收队列,很难在目标系统上增加一个大的负载,或者在其它的系统过载之前该系统就过载了;

  •   考虑结果的相关性,如果想监控或测试的仅仅是一个目标系统,在其它的一些系统上做同样的测试进行比较,因为可能是网络或路由器出现故障。

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

  •    和套接字有关的任何一个协议控制块的地址及所有套接字的状态;

  •    收到、发送出去和通信子系统中丢失的信息包数量;

  •    每个接口的累计统计信息;

  •    路由和它们的状态;

  netstat命令格式如下:

  1.   netstat 选项

  2.   常用选项的含义如下:

  3.   -a

  4.   显示所有socket,包括正在监听的。

  5.   -c

  6.   每隔1秒就重新显示一遍,直到用户中断他。

  7.   -i

  8.   显示所有网络接口的信息,格式同“ifconfig –e”。

  9.   -n

  10.   以网络IP地址代替名称,显示出网络连接情形。

  11.   -r

  12.   显示核心路由表,格式同“route –e”。

  13.   -t

  14.   显示TCP协议的连接情况。

  15.   -u

  16.   显示UDP协议的连接情况。

  17.   -v

  18.   显示正在进行的工作。

  •   netstat –in命令:显示所有配置接口的状态,如图9-30所示。  

性能测试—Linux/Unix操作系统监控(图19)

  图9-30 netstat -in命令报告

  •   MTU:最大传输单元,使用接口时可以传输的最大信息包大小,以字节为单位。

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

  •   B:已设置了一个广播地址。

  •   L:该接口是个回送设备。

  •   M:接收所有数据包(混乱模式)。

  •   N:避免跟踪。

  •   O:在该接口上,禁用A R P。

  •   P:这是个点到点链接。

  •   R:接口正在运行。

  •   U:接口处于“活动“状态。

  netstat –nr命令:显示路由器的相关信息,如图9-31所示。  

性能测试—Linux/Unix操作系统监控(图20)

  图9-31 netstat -nr报告

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

  •   Gateway:显示路由条目所指的网关,如果没有使用网关,就会出现一个星号(*)或0.0.0.;

  •   Genmask:显示路由的概述,在为具体的IP地址找到最合适的路由时,内核将查看路由表内的所有条目,在对找到的路由和目标路由比较之前,将IP地址和Genmask进行按位“与”计算;

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

  •   G:路由将采用网关;

  •   U:准备使用的接口处于“活动”状态;

  •   H:通过该路由,只能抵达一台主机;

  •   D:如果路由表的条目是由ICMP重定向消息生成的,就会设置这个标记;

  •   M:如果路由表条目已被ICMP重定向消息修改,就会设置这个标记;

  •   Iface:显示该连接所用的物理网卡,如eth0表示用第一张,eth1表示用第二张。

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

性能测试—Linux/Unix操作系统监控(图21)

  图9-32 netstat -nr报告

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

  附:川石信息全国校区最新开班时间,课程资料获取13691729932(微信同号)。  

性能测试—Linux/Unix操作系统监控(图22)


相关文章
  • 亚马逊运营成功转行软件测试,薪资13K表示很满意!2021-06-17 13:49:48
  • 西安川石的兰朋友喊你来当他的学弟学妹啦!2021-06-17 13:49:48
  • 国外的月亮也不一定比国内测试猿的年薪美~2021-06-17 13:49:48
  • 建筑工程专业朱同学成功转行为软件测试人!2021-06-17 13:49:48
  • 财务管理专业转行软件测试月薪甩会计几条街!2021-06-17 13:49:48
  • 只有技术沉淀才能成功上岸,深圳就业薪资13K!2021-06-17 13:49:48
  • 薪资11K!实现自我价值,从掌握一门IT技术开始...2021-06-17 13:49:48
  • 文科生转行软件测试照样拿下高薪15K!2021-06-17 13:49:48
  • 恭喜罗同学喜提19.5K,成功入行软件测试!2021-06-17 13:49:48
  • 毕业1年,迷茫的他最终选择转行软件测试2021-06-17 13:49:48