应用系统性能效率测试-JMeter服务器资源监控

应用系统性能效率测试-JMeter服务器资源监控

0x01 前言

性能测试和功能测试是测试工作中两个不同的方面,功能测试关注产品的所有功能上,要考虑到每个细节功能,每个可能存在的功能问题。性能测试主要关注于产品整体的多用户并发下的稳定性和健壮性。但两者目标相同,它们的最终目的都是为了提高软件质量,以更好地满足用户需求。
性能测试为了模拟验证测试的系统是否满足程序大量并发请求时,可能会导致源被占满,处理器不能即时处理进程时会出现进程排队的现象,如果出现持续排队的现象就说明CPU当前处于繁忙状态,不能及时响应用户请求。同时,性能测试是一个测试、监控、分析并调优的过程,所以在性能测试过程中,对服务器资源的监控是必不可少的。

0x02 常用监控指标

CPU使用率:进程消耗的CPU资源,一般不超过75%。
内存使用率:系统处理任务占用的内存资源,一般不超过75%。

0x03 工具&插件准备

JMeterPlugins-Standard-1.4.0
ServerAgent-2.2.3
Apache JMeter 5.2
Xshell 7 

0x04 测试端插件安装

1)	解压JMeterPlugins-Standard-1.4.0.zip,把 “\lib\ext\JMeterPlugins-Standard.jar”包,
放到JMeter目录的“\lib\ext”中;

2)	重新启动JMeter在线程组→添加→监听器,可以看到监听器中比之前增加了jp@gc开头的多个组件,见下图。

应用系统性能效率测试-JMeter服务器资源监控_第1张图片

3)	选择“jp@gc-PerfMon Metrics Collector”并添加,这个组件是用于监控资源的控制台。

0x05 服务端程序

“ServerAgent-2.2.3”是我们需要在被监控的服务器运行,用于在JMeter中监控的服务端程序,且同时支持
Windows、Linux系统。

在Windows系统的服务器中,我们直接运行“startAgent.bat”文件即可,见下图;

应用系统性能效率测试-JMeter服务器资源监控_第2张图片

在Linux环境下则需要运行“startAgent.sh”先通过命令“chmod 777 startAgent.sh ”提升可执行文件权限
后“./startAgent.sh”来执行Agent服务,见下图。

应用系统性能效率测试-JMeter服务器资源监控_第3张图片

0x06 监控配置

进入到“jp@gc-PerfMon Metrics Collector”中,在“Servers to Monitor”窗口中添加服务器IP、端口号(默认:4444),分别选择要监控的“CPU”、“Memory”等,在下一个窗口“所有数据写入一个文件”中,选择路径、并创建存储监控结果的文件,(注意:文件名默认为当前脚本名称,一定要修改名称及后缀否则会覆盖掉当前脚本。)

配置完成后,我们执行测试一段时间并停止,可以看到在“Chart”中同步展现了测试过程中的资源占用情况,见下图。
应用系统性能效率测试-JMeter服务器资源监控_第4张图片

0x07 异常问题

过程中遇到了运行报错的情况,查看报错指向了JDK1.8.0版本的不兼容,经过检查发现是“PerfMon”组件默认版本为2.0,在JMeter Plugins Manager中卸载PerfMon并重新安装2.1版本后解决。具体操作方式为:取消勾选→应用→切换到未安装选项卡→勾选“PerfMon”→选择2.1版本→应用,见下图。

0x08 性能测试方案设计

分享一些性能测试的设计方案,LoadRunner工具性能测试建模0513.pdf
1.性能测试建模

1. 系统用户模型
系统使用的用户群体大致分为系统总用户、在线用户、并发用户,其中系统总用
户为所有可能用到该系统的用户;在线用户为与系统保持连接关系并且 session 连接 未断
的用户;并发用户为同一时间向系统发出请求的用户,我们通过实际调研通过对 系统总用
户数及在线用户数的收集对并发用户数进行估算,力求与真实情况相接近。
**测试过程中的系统用户模型:**系统存在 200 名用户访问的可能。本次性能测试用
户模型均转化为并发用户,具体并发用户数情况参见本文档 1.3.1 测试要求中描述。
2. 典型业务模型
性能测试中不可进行穷举测试,对系统整体性能的考核可针对典型业务即大用户量访
问、高压力、高风险的业务进行测试,从而评估系统性能整体表现。测试过程中的典型业
务模型:采购计划编制、采购计划查询、综合查询统计。
3. 用户接入模型
指用户在访问系统时,以什么样的方式或者带宽来访问系统。测试过程中可通过 测
试工具或者相关设备对用户接入模式进行仿真。对用户接入行为的仿真模型我们称 为用
户接入模型。
**测试过程中的用户接入模型:**通过对本次测试内容分析,测试应在 1000M 环境下 执
行,且在测试环境中执行,带宽不做重点考虑。
4. 思考时间模型
指在测试过程中模拟人的真实操作行为,比如一个人访问应用系统的过程中,不 可
能是一直跟服务器进行交互,一定存在浏览、填写表单、阅读说明等行为,因此在 性能
测试过程中,需要通过一种机制来模拟这种行为,那么这种行为的模拟方式就是 建立
“思考时间模型”,通过测试脚本程序上的等待来完成用户以上行为的仿真。
测试过程中的思考时间模型: 信息采集业务思考时间为:3 秒
随机 警情处理业务思考时间为:3 秒随机 动态监控业务思考
时间为:5 秒随机
5. 数据模型 旨在为测试过程中模拟系统真实的业务数据,而人为在
系统中添加预埋数据及测
试数据。
6. 浏览器模型 浏览器模型:是指在测试过程中模拟用户浏览器的类型、操作模式、
缓存处理、
非 HTML 资源处理等配置方式的一个模型。浏览器模型的建立可以真实的仿真用户基于 客
户端访问系统的情况。
测试过程中的浏览器模型:浏览器类型仿真:IE6.0、IE8.0,不下载非 HTML 资 源,不清除浏览器缓存。
7. 性能监控模型
应用属性服务器

  对象   
度量
描述
      Memory
Free(KB)
可用物理内存
Swap(KB)
已使用的虚拟内存数量。在 Linux 中,该值   被识别为 swpd。
(Page)si
每秒钟从磁盘交换到内存的数量。 在 Linux 中   该值被放在 swap 区中。
Cache(KB)
文件系统缓存
               Process
      %CPU Usage
被处理器消耗的处理器时间数量。如果是专   用于某种特定应用(例如数据库服务器或者 应用服务器)则可应用相关进程的%Process Time 进行衡量,此时可接受的上线一般不超 过 85%。
   Page  Fault count
该进程产生的页面失效次数。可以用该值与   系统的页面失效次数进行对比,从而判断该 进程对页面失效的影响。
   R esident size(KB)
进程保留的使用内存量。该值等于进程的代   码使用内存+进程的数据使用内存。如果该值 在测试过程中持续增加,很可能意味着发生 了内存泄露。
            Processor
   %Idle Time
%Idle Time   描述的是CPU总的空闲时间。   如果该值低于10%,表明 CPU 瓶颈。可以  考虑增加一个处理器或换一个更快的处理 器。
   %User Time
非内核操作消耗的 CPU 时间。一般来说,如   果系统中使用大量的算法或复杂的计算操 作,该值会比较大。
%Kernel Time
CPU 内核时间是在特权模式下处理线程执行   代码所花时间的百分比。
%IOwait Time
CPU 消耗在等待 I/O  处理上的时间,此值需要   结合 I/O 计数器进行考虑。
                           PhysicalD isk
Percent  of  time    the  disk is busy
指所选磁盘驱动器忙于为读或写入请求提供   服务所用的时间百分比。
Average  number of    transactions  actively being serviced
指读取或写入请求(为所选磁盘在实例间隔   中队列的)的平均数。该值应不超过磁盘数的 1.5-2 倍。要提高性能,可增加磁盘。 iostat 的结果中,该值为 actv。
Average  number of    transactions  actively waiting for service
指读取(写入)请求(队列)的平均数。    iostat 的结果中该值显示为 wait。
Read(Writes) per sec
物理磁盘上每秒钟读、写磁盘次数。两者相   加,应该小于磁盘设备的最大容量。 在 iostat   的结果中,该值显示为 r/s 和 w/s。  
Average   service    time active  transactions in milliseconds
指以毫秒计算的在磁盘上读取和写入数据的   所需平均时间。在 iostat 的结果中,该值显 示为 asvc_t。  
The  number of disk    operations  per second  
显示每个磁盘每秒的被操作次数。
      System  
   %User Time
系统上所有处理器执行非内核操作的平均时   间的百分比,该值反映了用于有用作业上的 时间比率。
CPU       context    switches  
CPU 上下文切换。  
      Network  
Bytes     Received/sec  
网络每秒接收的字节数。
Bytes Sent/sec
网络每秒发送的字节数。
Bytes Total/sec
网络每秒总和的字节数。
Current Bandwidth
当前的带宽数值。
数据属性服务器
  对象   
度量  
描述  
      System
Total  Processor Time
数据库进程占用的 CPU 时间。在不同的数据库   中以不同的名称表示。 在 Oracle 中该计数器 被称为:CPU used by  this Session。
   User Connections  
当前用户连接数。数据库服务器一般都有用户   连接限制,当应用不合理时,有可能出现连接 数超过限制的情况,导致一些异常发生。
Memory
Cache  Hit Ratio
缓存命中率。当该值比较小,而数据库比较繁   忙时,可能需要调整缓存的大小。
PGA Memory/UGA    Memory(仅用于 Oracle)
   Oracle 进程的内存占用情况。
   Lock
Average  Wait Time
锁平均等待时间
Lock Requests/sec
每秒钟锁请求数
Number of    Deadlocks /sec
每秒钟产生死锁的数量。当该计数器值较大   时,需要查找产生数据库死锁的原因。
Throughput  
Throughput  
指单位时间内可以成功传输的数据数量。
      I/O  
Outstanding Reads   (Writes/s)
被挂起的物理读写。当计数器比较大时,可能   是 CPU、磁盘 I/O  产生瓶颈,可以通过服务器 的 CPU 和 I/O 分析了解进一步的原因。
Page  Reads /sec
每秒钟页面读写次数
Transactions/Sec  
每秒钟产生事务数。
Iops  
每秒进行读写(I/O)操作的次数。
      Network  
Bytes     Received/sec  
网络每秒接收的字节数。
Bytes Sent/sec
网络每秒发送的字节数。
Bytes Total/sec
网络每秒总和的字节数。
Current Bandwidth
当前的带宽数值。

你可能感兴趣的:(测试工具,压力测试,单元测试,集成测试)