菜鸟的性能测试之路(三)——关于Jmeter压测

在第一篇性能测试的时候说过,由于公司高速发展,最近开始重温专项测试。此前已经亲测过Apache Bench,接下来我会利用Apache Jmeter来进行压力测试,且包括服务器的状态监控。

那么接下来我要对我们的测试服务器进行压力测试,包括登录前的页面和登录后的页面,主要目的是测试负载均衡的实现效果。在网上也参考了不少资料,我把能踩的坑都踩了一遍,也算是能从坑里爬出来了,至少是能实现了当初的目标。

安装Jmeter

我用的版本是3.0版本,在这里建议大家和我一样,不要轻易使用最新版本,次新版本就可以了,因为最新版本有可能和其他插件和环境还不能很好兼容。至于怎么安装就不一一阐述了,网上有大把的教程。要注意的是,由于Jmeter是用Java语言编写的,所以同时也要把java环境部署好。安装好了之后,Jmeter的bin目录下有个Jmeter.bat文件,双击就能运行了。


首次打开Jmeter页面

未登录测试

运行软件之后,我们右击“测试计划”——“添加”——“Threads(Users)——线程组”,这样就建好了一个线程组了,作用当然是用来跑线程。有了线程组之后,我们再右击线程组,“添加”——“配置元件”——“http请求默认值”,在这里面可以设置一些常用的默认的设置,这里我输入我们的测试服务器的IP或域名,这里我输入“10.1.xx.xx”,端口号则输入“6502”,(因为我要测试的地址是:10.1.xx.xx:6502)协议是“http”,如果要测试的网址是https开头那就填“https”,其他则默认,这时候点击左上角保存会弹出一个保存框,这是让你保存你现在所做的测试配置,以后需要再测试的话的直接打开保存的jmx文件就行了。保存完了之后,我们再右击“线程组”——“添加”——“Sampler”——“http请求”。咦,这里和刚才的“http请求默认值”不是一样的吗?刚刚那个只是默认值,只是用来设置一些默认配置。真正发起请求的是“http请求”,在http请求里面我们在“路径”里面输入斜杠“/”就ok了,表示默认路径,IP那一栏就不用输入了。这是因为在http请求默认值里面已经输过IP地址,以后可以新建多个http请求,只要修改路径就行了,这样就可以访问同一个网站的不同页面,这就是“http请求默认值”的意义所在,把一些共用的设置写一遍就好了。接着,我们再右击“线程组”——“添加”——“监听器”——“察看结果数”,在这里可以查看到http请求和结果。每次新建组件和修改配置信息都要点击保存,页面配置图如下所示:


http请求默认值


http请求

接下来点击工具栏的绿色运行按钮,就可以在“察看结果树”中看到结果了。


察看结果树的结果

我们新建的“http请求”返回结果200,表明请求成功,从绿色打钩也能看出,上图中的下拉列表框可以选择显示格式,我们选择HTML,切换到“响应数据”就可以看到返回的页面。

设置线程并发数

接下来点击“线程组”可以看到线程组的设置页面,默认设置是1个线程,1秒启动,循环1次。线程数表示启动多少个线程,Ramp-Up Period表示花多长时间启动所有线程,循环次数表示每个线程的执行次数。例如,我设置线程数为3,Ramp-Up Period为6,循环次数3,表示软件将在6秒内启动3个线程,也就是2秒启动1个线程,每个线程执行3次请求。

线程并发设置

此外还可以勾选“调度器”,比如我填入持续时间50,启动延迟0,将循环次数勾选“永远”,表示线程立即启动,执行50秒后停止。要注意,如果设置了持续时间和启动延迟,那么下面的启动时间和结束时间就不起作用了,就不用管了,点击运行即可。

设置其他监听器

之前仅仅设置了“察看结果树”这个监听器,这时候可以右击“线程组”——“添加”——“监听器”,里面有很多监听器可供选择,比如图形结果,用表格查看结果,聚合报告等等,这些都是反映测试过程的指标数据。图形结果以图形的形式显示吞吐量、偏移、平均值等信息,表格结果显示每一次请求的时间,返回,发送字节数,连接时间等等,聚合报告里面显示总体请求的吞吐量,错误率等等。下图为表格结果的样式。

用表格察看结果

可以看出,图中显示了9个Http请求,分别由3个线程执行,每个线程执行3次,正好符合我们对于线程组的设置。图中每一列的含义分别表示请求序号,开始时间,线程序号,请求名,请求所花的时间,请求状态,请求字节数,发送字节数,等待时长,连接时间。

聚合报告如下图所示,每一列的含义分别表示请求名称,请求总数,请求的平均响应时间(毫秒),50%的请求的响应时间,90%的请求的响应时间,95%的请求的响应时间,99%的请求的响应时间,最小的响应时间,最大的响应时间,错误的请求率(错误请求数/总的请求数),吞吐量(每秒处理的请求数),接收的字节速率,发送的字节速率。


聚合报告

登录测试

前面我测试的页面是不需要登录的,现在来测试一下登录的操作。关于登录需要的参数,一般来说就是用户名和密码,但是往往还需要其他参数,我们可以通过抓包工具Fiddler进行抓包,我们在网站中进行一次正常登录,可以在Fiddler中看到登录需要的post参数。例如我这里的Fiddler中显示我的测试页面登录操作post参数有txtUserName, txtUsePws, 那么需要在“http请求”或“http请求默认值”里面填入,下图所示。


点击“添加”按钮就可以添加参数了,保存好后,我们点击运行,就可以在察看结果树中看到登录成功后的页面了,具体的操作和前面一样的。

会话保持


进入登录后的页面后,还想访问例如“个人信息”,“个人设置”等模块,这些网页需要登录成功后才能访问到,这里就需要进行会话的保持,我们右击“线程组”——“添加”——“配置元件”——“http cookie管理器”,要添加的内容我们可以在察看结果树的“请求”选项卡里面看到,里面可以看到登录需要的cookie,如果没有找到cookie或cookie为空,就不用填,无须再手动配置。如图所示。


Cookie管理器

此时,我们在http请求里面输入登录后的页面网址就可以请求成功了。

利用文件读取访问多个网页


我在“http请求”的路径里面填入的是我要访问的网页,每次只能填一个。假如我想访问好几个网页,例如首页,通知页,介绍页等等,除了新建http请求外,我们还可以将这些网页的地址存储在TXT文件里。例如在我的测试服务器上,想要访问Preloan/xxx, LoanManage/xxx, AfterLoan/xxx等页面,如下:


TXT存放多个地址

网址填入后,我们在Jmeter里面的“选项”——“函数助手对话框”——“StringFromFile”,将TXT的完整路径贴到图中位置,点击生成,可以在框里生成TXT文件的读取路径。

函数助手

    我们将$开头的那串路径贴到“http请求”的路径里面,就可以访问到TXT里面的所有网页了,如图所示。

服务器状态实时监听


上面介绍了几个Jmeter自带的监听器,但是我发现,里面显示的指标好像都不是我特别需要的。目前我更关心我的请求执行过程中服务器状态的改变,例如CPU,内存,磁盘,网络,TPS,响应时间图等等,因为这才是压力测试的目的所在,服务器状态随着请求增加的变化曲线才是我们更加需要看到的。想看到服务器变化的曲线图,需要下载JMeterPlugins-Extras.jar和JMeterPlugins-Standard.jar,将这两个jar包放入Jmeter的安装路径下的lib/ext/下面,重启Jmeter后,右击“线程组”——“添加”——“监听器”,这时候可以看到多了好多监听器,大多数以“jp@gc”开头的监听器。这里选择“PerfMon Metrics Collector”,里面将会显示服务器的状态信息,现在还看不到,因为要测试的服务器需要安装一个包,叫ServerAgent.zip,譬如我的服务器是Windows的,我将ServerAgent在服务器中解压,运行里面的StartAgent批处理文件就可以了。到这里也要注意一点,因为这个文件是属于Jmeter的插件,所以测试服务器也要装上Java的jdk文件才可以运行起来。启动起来后如下所示:


服务器端的服务启动

ServerAgent的默认端口是4444,按下图填入服务器的地址和端口号,以及需要监控的硬件,如CPU,内存,磁盘,网络等等。


PerfMon Metrics Collector

OK,接下来点击运行,可以在chart下看到服务器的状态变化曲线如下:


Chart

其实监听器里面还有很多其他的曲线,比如TPS曲线,响应时间曲线等等,都可以自己添加。到这里,基本已经实现了当初想要的指标和目的了。


题外话:

其实我发现如果是单台服务器测试的话,用我们测试服务器自带的性能监视器会更好用,数据也更全面一些。不过不同公司的测试环境不一样,按自己的需求来走就好。

性能监视器



读更多的好书,拍更美的照片,写更酷的代码,遇见更有趣的人,愿望是实现从IT菜鸟到全栈工程师的蜕变。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容

  • 主要文体来自 CDNS:https://www.cnblogs.com/ceshisanren/p/5639895...
    Amano阅读 10,960评论 3 27
  • 转载:http://www.51testing.com/html/10/n-3725610.html​ ​测试计划...
    测试大头兵阅读 955评论 0 1
  • 有个和尚与书生同船,书生高谈阔论,显得自己很有文化,和尚自卑胆怯,蜷缩在角落,只有听的份,听着听着,觉得书生的言...
    一匹马来了阅读 510评论 0 0
  • 早上,伍辰在群里发了一张照片。北京严重雾霾,叫童鞋们安心在家写作。 我回应:你们应该感觉到优越感的,这是帝都特产,...
    微语素心阅读 270评论 4 1
  • 我是小青琴,今天是我参加“每天一篇文章”连续写作的第96天,每天一篇文章,皆与“大学生读书创业”有关。希望我的每篇...
    小青琴阅读 919评论 0 1