怎么查看apache的ab测试的结果,每行数据分布代表什么意思

怎么查看apache的ab测试的结果,每行数据分布代表什么意思,第1张

给你列几个我自己常看的性能指标:
Concurrency Level #测试的并发数
Time taken for tests #完成所有请求的时间合计
Complete requests #完成的请求数合计
Failed requests #失败的请求数
Requests per second #平均每秒处理多少个请求
Time per request #平均的响应时间,单位是毫秒
PS:网站性能压力测试是性能调优过程中必不可少的一环。只有让服务器处在高压情况下才能真正体现出各种设置所暴露的问题。Apache中有个自带的,名为ab的程序,可以对Apache或其它类型的服务器进行网站访问压力测试。
ApacheBench命令原理:
ab命令会创建很多的并发访问线程,模拟多个访问者同时对某一URL地址进行访问。它的测试目标是基于URL的,因此,既可以用来测试Apache的负载压力,也可以测试nginx、light>

用loadrunner做简单网站的压力测试的方法

使用LoadRunner 完成测试一般分为四个步骤:

1、Vvitrual User Generator 创建脚本

创建脚本,选择协议,录制脚本, 编辑脚本,检查修改脚本是否有误。

2、中央控制器(Controller)来调度虚拟用户。

创建Scenario,选择脚本,设置机器虚拟用户数,设置Schedule,如果模拟多机测试,设置Ip Spoofer。

3、运行脚本。

分析scenario

分析测试结果

4、安装LoadRunner 中文版。

LoadRunner 分为Windows 版本和Unix 版本。如果所有测试环境基于Windows 平台, 那么只要安装Windows 版本即可。本章讲解的安装过程就是LoadRunner78中文的Windows 版本的安装。

5、使用LoadRunner进行负载/压力测试。

6、录制基本的用户脚本。

创建用户脚本需要用到VuGen。提示: 运行VuGen 最好在1024768 的分辨率下, 否则有些工具栏会看不到。启动Visual User Generator 后, 通过菜单新建一个用户脚本, 选择系统通讯的协议。这里需要测试的是Web 应用,同时考虑到后台SQL数据库所以需要选择Web(>

7、在URL 中添入要测试的Web 站点地址。

●测试>

这里简单说明一下:VuGen 中的脚本分为三部分:vuser_init、vuser_end 和Action。其中vuser_init 和vuser_end 都只能存在一个, 不能再分割, 而Action 还可以分成无数多个部分( 通过点击New 按钮, 新建ActionXXX)。在录制需要登陆的系统时, 把登陆部分放到vuser_init 中, 把登陆后的 *** 作部分放到Action 中, 把注销关闭登陆部分放到vuser_end 中。( 如果需要在登陆 *** 作设集合点, 那么登陆 *** 作也要放到Action 中, 因为vuser_init 中不能添加集合点) 在其它情况下, 只要把 *** 作部分放到Action 中即可。注意: 在重复执行测试脚本时,vuser_init 和vuser_end 中的内容只会执行一次, 重复执行的只是Action 中的部分。

8、点“ 选项 ”按钮, 进入录制的设置窗体, 这里一般情况下不需要改动。

●然后点“OK” 后,VuGen 开始录制脚本。在录制过程中, 不要使用浏览器的“ 后退” 功能,LoadRunner 支持不太好! 录制过程中, 在屏幕上会有一个工具条出现。录制的过程和WinRunner 有些类似, 不再多介绍。录制完成后, 按下“ 结束录制” 按钮,VuGen 自动生成用户脚本, 退出录制过程。

9、完善测试脚本。

当录制完一个基本的用户脚本后, 在正式使用前还需要完善测试脚本, 增强脚本的

灵活性。一般情况下, 通过以下几种方法来完善测试脚本。插入事务、插入结合点、插入注解、参数化输入。这里只举例介绍参数化如何设置,其它只作简单介绍。

10、插入事务。

事务(Transaction): 为了衡量服务器的性能, 需要定义事务。比如: 在脚本中有一个数据查询 *** 作, 为了衡量服务器执行查询 *** 作的性能, 把这个 *** 作定义为一个事务, 这样在运行测试脚本时,LoadRunner 运行到该事务的开始点时,LoadRunner 就会开始计时, 直到运行到该事务的结束点, 计时结束。这个事务的运行时间在结果中会有反映。

插入事务 *** 作可以在录制过程中进行, 也可以在录制结束后进行。LoadRunner 运行在脚本中插入不限数量的事务。

具体的 *** 作方法如下: 在需要定义事务的 *** 作前面, 通过菜单或者工具栏插入。输入该事务的名称。注意: 事务的名称最好要有意义, 能够清楚的说明该事务完成的动作。插入事务的开始点后, 下面需要在需要定义事务的 *** 作后面插入事务的“ 结束点”。同样可以通过菜单或者工具栏插入。默认情况下, 事务的名称列出最近的一个事务名称。一般情况下, 事务名称不用修改。事务的状态默认情况下是LR_AUTO。一般情况下, 也不需要修改, 除非在手工编写代码时, 有可能需要手动设置事务的状态。

11、插入集合点。

插入集合点是为了衡量在加重负载的情况下服务器的性能情况。在测试计划中, 可能会要求系统能够承受1000 人同时提交数据,在LoadRunner 中可以通过在提交数据 *** 作前面加入集合点, 这样当虚拟用户运行到提交数据的集合点时,LoadRunner 就会检查同时有多少用户运行到集合点,如果不到1000 人,LoadRunner 就会命令已经到集合点的用户在此等待, 当在集合点等待的用户达到1000 人时,LoadRunner 命令1000 人同时去提交数据, 从而达到测试计划中的需求。

注意: 集合点经常和事务结合起来使用。集合点只能插入到Action 部分,vuser_init 和vuser_end 中不能插入集合点。具体的 *** 作方法如下: 在需要插入集合点的前面, 通过菜单或者工具栏 *** 作输入该集合点的名称。注意: 集合点的名称最好要有意义, 能够清楚的说明该集合点完成的动作。

12、插入注释。

注释的作用就不多说了, 不过插入注释最好是在录制过程中。具体的 *** 作方法如下: 在需要插入注释的前面, 通过菜单或者工具栏 *** 作。

13、参数化输入。

如果用户在录制脚本过程中, 填写提交了一些数据, 比如要增加数据库记录。这些 *** 作都被记录到了脚本中。当多个虚拟用户运行脚本时, 都会提交相同的记录, 这样不符合实际的运行情况, 而且有可能引起冲突。为了更加真实的模拟实际环境, 需要各种各样的输入。参数化输入是一种不错的方法。

用参数表示用户的脚本有两个优点:

① 可以使脚本的长度变短。

② 可以使用不同的数值来测试脚本。例如, 如果企图搜索不同名称的图书, 仅仅需要写提交函数一次。在回放的过程中, 可以使用不同的参数值, 而不只搜索一个特定名称的值。

参数化包含以下两项任务:

① 在脚本中用参数取代常量值。

② 设置参数的属性以及数据源。

参数化仅可以用于一个函数中的参量。不能用参数表示非函数参数的字符串。

另外, 不是所有的函数都可以参数化的。

参数化输入的讲解, 采用一个例子的方式来进行。

在本例中参数化用户的登陆名:

先看如下脚本,通过脚本录制找到用户登陆部分,如图

14、参数名随意取,建议取通俗易懂的名字,下面重点介绍一下参数的类型。

●DateTime: 很简单, 在需要输入日期/时间的地方, 可以用DateTime 类型来替代。其属性设置也很简单, 选择一种格式即可。当然也可以定制格式。

●Group Name:暂时不知道何处能用到,但设置比较简单。在实际运行中,LoadRunner 使用该虚拟用户所在的Vuser Group 来代替。但是在VuGen 中运行时,Group Name 将会是None

●Load Generator Name: 在实际运行中,LoadRunner 使用该虚拟用户所在Load Generator 的机器名来代替。

●Iteration Number: 在实际运行中,LoadRunner 使用该测试脚本当前循环的次数来代替。

●Random Number: 随机数。很简单。在属性设置中可以设置产生随机数的范围

●Unique Number:唯一的数。在属性设置中可以设置第一个数以及递增的数的大小。

注意: 使用该参数类型必须注意可以接受的最大数。例如: 某个文本框能接受的最大数为99。当使用该参数类型时, 设置第一个数为1, 递增的数为1, 但100 个虚拟用户同时运行时,第100 个虚拟用户输入的将是100,这样脚本运行将会出错。

注意: 这里说的递增意思是各个用户取第一个值的递增数, 每个用户相邻的两次循环之间的差值为1。举例说明: 假如起始数为1, 递增为5, 那么第一个用户第一次循环取值1, 第二次循环取值2; 第二个用户第一次循环取值为6, 第二次为7; 依次类推。

●Vuser ID: 设置比较简单。在实际运行中,LoadRunner 使用该虚拟用户的ID 来代替,该ID 是由Controller 来控制的。但是在VuGen 中运行时,Vuser ID 将会是–1。

File: 需要在属性设置中编辑文件,添加内容,也可以从现成的数据库中取数据( 下面将会介绍)

●User Defined Function: 从用户开发的dll 文件提取数据。就目前我认为, 这种方式没有必要。VuGen 支持C 语言的语法,在VuGen 中重新编写类似的函数应该不难。

上面的例子中, 取随机数即可。点“Properties… ” 按钮, 进行属性设置窗口添入随机数的取值范围为(1-50), 选择一种数据格式。在“属性” 中有以下几个选项:

◆Each Occurrence:在运行时, 每遇到一次该参数, 便会取一个新的值

◆Each iteration:运行时, 在每一次循环中都取相同的值

◆Once:运行时, 在每次循环中, 该参数只取一次值

这里我们用的是随机数, 选择Each Occurrence 非常合适。

下面我们再介绍用数据库中的用户名来参数化登陆用户名。

框选住登陆名,点鼠标右键,d出对话框,选择“替换为新参数”d出对话框,此时参数名输入:name,参数类型选择File,如图

15、注意: 参数的文件名不要使用condat、pmdat 或者lptdat 等系统装置名下面我们将会连接数据库, 从数据表中选择用户名。点“数据向导” 按钮,显示如图

16、添入连接字符串, 点“创建” 按钮,选择事先配置好的ODBC连接。在SQL语句里输入select查询语句,出现如图窗口

17、提醒: 在参数数据显示区, 最多只能看到100 行, 如果数据超过100 行, 只能点“编辑” 按钮, 进入记事本看。

“选择下一行 ” 有以下几种选择:

●Sequential: 按照顺序一行行的读取。每一个虚拟用户都会按照相同的顺序读取

●Random: 在每次循环里随机的读取一个, 但是在循环中一直保持不变

●Unique : 唯一的数。注意: 使用该类型必须注意数据表有足够多的数。比如Controller 中设定20 个虚拟用户进行5 次循环, 那么编号为1 的虚拟用户取前5 个数, 编号为2 的虚拟用户取6-10 的数, 依次类推, 这样数据表中至少要有100 个数据, 否则Controller 运行过程中会返回一个错误。

“按编号”指选择列表中的那一列数据,从左到右分别是1、2、3依次通常用在有关联性的数据上面。我们这里取值Sequential 即可。完成设置关闭即可

43 单机运行测试脚本

经过以上的各个步骤后, 脚本就可以运行了。运行脚本可以通过菜单或者工具栏来 *** 作。

执行“ 运行” 命令后,VuGen 先编译脚本, 检查是否有语法等错误。如果有错误,VuGen

将会提示错误。双击错误提示,VuGen 能够定位到出现错误的那一行。为了验证脚本的正

确性, 还可以调试脚本, 比如在脚本中加断点等,  *** 作和在VC 中完全一样, 相信大家谁都不会感到陌生。如果编译通过, 就会开始运行。然后会出现运行结果。

使用LR对数据库进行性能测试,实际上有多种办法,包括通过现有的数据库协议进行CS模式的先录制后执行的模式,以及通过socket方式向服务器发包方式的测试方式。这些是常规书籍上介绍的比较简单上手的测试方法,但是不具备通用性,受已有协议或socket编程方式的限制,所以需要更为通用的测试方法。
用Java user的协议进行所有数据库性能的测试工作:
Java user 不需要录制,把所有的 *** 作通过java语言进行实现,通过lr调用java的class进行加压批量 *** 作,这样可以不关心被测系统是哪个数据库,只要能够通过jdbc进行访问,就能实现性能测试。
一、测试环境准备
1 被测服务器准备,根据测试目的,搭建需要的数据库服务器,确保数据库能够正常访问,正常 *** 作;
2 Java代码的准备,无论使用哪种IDE,只要能够编写访问数据库的class就可以,形式可以是j2se,也可以是j2ee,因为在 *** 作时只使用class的部分方法,所以j2ee就可以了;
3 LR的脚本调试,把java的class导入到脚本调试模式,根据需要添加事务以及其他 *** 作。
二、编写数据库访问
1 使用myeclipse,创建web project,创建如下图的包目录:
Java文件中包含各种访问数据库的方法。
需要注意的是,class中的方法必须是public static,否则LR中无法调用。由于创建的是j2ee程序,所以不用main函数,在web中就可以进行功能验证。
确认class中的方法编写完成,创建一个webjsp文件,如下:
导入class
声明类,并实例化,直接调用刚才编写的3个方法,因为这3个方法是直接对数据库进行 *** 作,不需要实参,也没有返回值,所以直接实现即可。
此时启动web服务,在浏览器中输入jsp的地址,直接刷新页面,就可以调用这3个方法,如果正确,就会对相应的表进行 *** 作,如果不正确,则需要修改相应的代码。
2 LR脚本准备:
LR脚本实际上就是对访问代码的调用,关键在于需要根据测试场景划分不同的脚本布局。
例如:在myEclipse里,我们只编写了一个class,其中包含三个方法,如果在执行性能测试时,这三个方法相互独立,互不干涉,则最简单的划分方法是,创建三个java user,每个java user中包含一个方法,做三份脚本,场景执行时分别进行调用。如果三个方法之间有相互关系,则需要根据实际情况,把有关联的方法放在一起,具体情况可按实际灵活分配。
因为已经将class文件进行编译发布了,所以可以在“java2postgres\WebRoot\WEB-INF\classes\com\lr\test”目录中找到对应的class文件,
复制这个文件,找到LR的目录:HP\LoadRunner\classes\com\lr\test\ 如果没有文件夹,按相同的内容创建。
在LR脚本中进行引包 *** 作:
将需要执行的java类以及方法,放在action中,可根据实际测试情况和所需要验证的内容,具体调试代码。
在这里可以像编写普通LR脚本一样,添加事务或集合点等内容。
由于是通过JDBC对数据库进行访问,因此要在java user中加载jdbc驱动。
运行时设置中,增加jdbc驱动,需要注意的是java user使用的本地jdk,需要至多16版本,若使用17版本,回放会有错误,这是jdk版本的问题。
*** 作完成之后,按F5或点击运行,进行脚本回放,实际此时也对数据库进行了 *** 作,可以直接查询对应的表,检查功能是否正确。
三、执行性能测试
已经有了java user的脚本,和普通web性能测试一样,设计场景、执行测试、收集报告、分析性能瓶颈即可。

我来给你解释解释:
样本数目:总共发送到服务器的请求数。
最新样本:代表时间的数字,是服务器响应最后一个请求的时间。
吞吐量:服务器每分钟处理的请求数。
平均值:总运行时间除以发送到服务器的请求数。
中间值:时间的数字,有一半的服务器响应时间低于该值而另一半高于该值。
偏离:服务器响应时间变化、离散程度测量值的大小,或者,换句话说,就是数据的分布。
关于你说的测试值范围,可根据你的不同测试目的进行设置。简单来讲,线程数代表有多少个线程,也就是代表多少个用户;Ramp-Up Period(in-seconds)代表隔多长时间执行,0代表同时并发;循环次数就是代表执行几次。
试试看吧~有问题再问我,最佳答案一定要给我啊:)

通常,当需要处理大批量的数据时,都需要进行压力测试。通过大量并发和大量数据,让程序和机器达到一定的负载,以检测程序是否还能正常工作,从而检测出程序的瓶颈所。(1)数据库连接数是否过多、压力是否过大、是否有很慢的sql执行、是否有死;(2)程序的cpu、内存、硬盘、网络使用是否合理;(3)程序是否稳定运行;(1)使用mytop查看数据库状况(2)使用atop查看资源使用情况atop 就是一款用于监控 Linux 系统资源与进程的工具,它以一定的频率记录系统的运行状态,所采集的数据包含系统资源(CPU、内存、磁盘和网络)使用情况和进程运 行情况, 并能以日志文件的方式保存在磁盘中,服务器出现问题后, 我们就可以获取相应的 atop 日志文件进行分析。1)atop安装:sudo aptitude install atop2)提交大批量的数据给应用程序进行处理,一段时间后,获取得到atop的log(/var/log/下)。3)根据该log即可分析系统资源(CPU、内存、磁盘和网络)使用情况和进程运行情况。

众所周知,服务器是整个网络系统和计算平台的核心,许多重要的数据都保存在服务器上,很多网络服务都在服务器上运行,因此服务器性能的好坏决定了整个应用系统的性能。

现在市面上不同品牌、不同种类的服务器有很多种,用户在选购时,怎样从纷繁的型号中选择出所需要的,适合于自己应用的服务器产品,仅仅从配置上判别是不够的,能够通过实际测试来筛选。而各种的评测软件有很多种,你应该选择哪个软件测试?下面就介绍一些较典型的测试工具:

(一)服务器整机系统性能测试工具

一台服务器系统的性能可以按照处理器、内存、存储、网络几部分来划分,而针对不同的应用,可能会对某些部分的性能要求高一些。

Iometer(>一般的网站,在进入业务功能前先需登录,然后才能访问业务功能。基本框架如下
详细步骤:

1 用badboy录制登录,访问随意一个网址。

2用jmeter打开,一会自己写的时候可以参考里面的参数名称或路径什么的。如果对>

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/13236786.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-06-24
下一篇 2023-06-24

发表评论

登录后才能评论

评论列表(0条)

保存