在第一篇性能测试的时候说过,由于公司高速发展,最近开始重温专项测试。此前已经亲测过Apache Bench,接下来我会利用Apache Jmeter来进行压力测试,且包括服务器的状态监控。
那么接下来我要对我们的测试服务器进行压力测试,包括登录前的页面和登录后的页面,主要目的是测试负载均衡的实现效果。在网上也参考了不少资料,我把能踩的坑都踩了一遍,也算是能从坑里爬出来了,至少是能实现了当初的目标。
安装Jmeter
我用的版本是3.0版本,在这里建议大家和我一样,不要轻易使用最新版本,次新版本就可以了,因为最新版本有可能和其他插件和环境还不能很好兼容。至于怎么安装就不一一阐述了,网上有大把的教程。要注意的是,由于Jmeter是用Java语言编写的,所以同时也要把java环境部署好。安装好了之后,Jmeter的bin目录下有个Jmeter.bat文件,双击就能运行了。
首次打开Jmeter页面http请求默认值 http请求未登录测试
接下来点击工具栏的绿色运行按钮,就可以在“察看结果树”中看到结果了。
察看结果树的结果设置线程并发数
接下来点击“线程组”可以看到线程组的设置页面,默认设置是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%的请求的响应时间,最小的响应时间,最大的响应时间,错误的请求率(错误请求数/总的请求数),吞吐量(每秒处理的请求数),接收的字节速率,发送的字节速率。
聚合报告登录测试
点击“添加”按钮就可以添加参数了,保存好后,我们点击运行,就可以在察看结果树中看到登录成功后的页面了,具体的操作和前面一样的。
Cookie管理器会话保持
TXT存放多个地址利用文件读取访问多个网页
网址填入后,我们在Jmeter里面的“选项”——“函数助手对话框”——“StringFromFile”,将TXT的完整路径贴到图中位置,点击生成,可以在框里生成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 CollectorOK,接下来点击运行,可以在chart下看到服务器的状态变化曲线如下:
Chart其实监听器里面还有很多其他的曲线,比如TPS曲线,响应时间曲线等等,都可以自己添加。到这里,基本已经实现了当初想要的指标和目的了。
题外话:
其实我发现如果是单台服务器测试的话,用我们测试服务器自带的性能监视器会更好用,数据也更全面一些。不过不同公司的测试环境不一样,按自己的需求来走就好。
性能监视器读更多的好书,拍更美的照片,写更酷的代码,遇见更有趣的人,愿望是实现从IT菜鸟到全栈工程师的蜕变。