天天看点

Jmeter上传服务压测-基于Linux服务器

Jmeter工具介绍

Apache Jmeter 是一款开源的基于Java的压力测试工具,它虽然没有像LR这样的企业级软件功能强大,但是Jmeter基本满足了测试人员在工作中的基本需要。

  • 特点:
  1. 能够对HTTP、FTP服务器进行压力和性能测试,也能对任何数据库进行同样的测试(通过JDBC)
  2. 同时支持单线程和多线程并发的操作
  3. Jmeter具有很强的扩展性,可以配合多种开发工具或测试工具,因为是纯Java的,增强了其可移植性

Jmeter安装及环境配置

Jmeter的安装非常的便捷,解压包同时支持Windows和Linux的使用。安装之前首先需要你的环境中有JDK。

Jmeter的下载地址:http://jmeter.apache.org/download_jmeter.cgi

环境配置:Windows中,只需要在计算机的环境变量中增加[;%JMETER_HOME%\bin],即可。

Windows中只需运行压缩包中bin目录下的jmeter.bat

Linux中,运行压缩包中的jmeter.sh。   --that's it !

编写Jmeter脚本

本次列举的实例是在Linux服务器中进行相关的压力测试,但是我们需要在Windows中先创建好需要的脚本,然后导入到Linux服务器中。因为jmeter脚本无论在Windows还是Linux中都是互通的,能够直接运行。

  • 屡一下本次测试工作的大体思路:

1.将Windows和Linux中的jmeter都安装配置好;

2.Windows下编写jmeter脚本;

3.Linux中运行脚本;

4.Windows中查看(导出的)结果;

5.记录、总结;

首先看一下本次示例的脚本中都涉及到什么,都要注意些什么问题:

Jmeter上传服务压测-基于Linux服务器

请求中对应的解释:

1.域名和token是本次操作中添加的全局定量,域名也就是服务器名称/IP,也可以放在HTTP请求页面,端口号除特殊的之外可以不填;而token不是都会用到,本次因为涉及到token,所以添加了。

2.在HTTP请求中,因为上传操作使用的参数化,所以添加了相应的插件:CSV Data Set Config,这个我们下面再讲解。

3.jmeter常用的两个插件:查看结果树、聚合报告,这两个插件可以直观的看到请求的成功与否,以及请求操作的相关数据。

4.上传操作,因此使用post方式; 编码方式一般都会选择 utf-8。

5.这是本次示例使用到的接口路径,工作涉及的相关接口可自己把控。

6.这里就是本次需要上传的文件路径,将其参数化了。

关于参数化:

Jmeter上传服务压测-基于Linux服务器

1.这里是填写的Linux环境下的路径,在Windows中测试脚本时,还需要填写对应的路径才行。

2.编码方式,这里就不再多说。

(注:参数化相应的文件数据格式,跳行编写就行了,即每条数据占一行。)

关于脚本队列:

Jmeter上传服务压测-基于Linux服务器

这部分可以先设定一个初始值,在Linux下是能够进行修改的。

关于“查看结果树”:

Jmeter上传服务压测-基于Linux服务器

这里需要注意一点,将“仅日志错误”给勾选上,这样导出的测试结果数据才不会特别大,不然打开时会很慢。

到这里,关于编写脚本的大体步骤和注意事项都列举出来了。接下来就是运行脚本,整理结果啦。

脚本导入Linux服务器

关于导入脚本至Linux服务器,这里需要注意一些事项:

1.导入的脚本只需要在压力机上有一份即可,但是参数化文件必须在每个测试机(包括压力机)上都存在。关于什么是压力机、测试机,这些在下文中会逐渐讲到。

2.导入的脚本所涉及的路径,一定和脚本中的路径相符合,不然在测试工作无法进行。

3.另外,测试的机器需要注意host的配置(有些会涉及),以及jmeter内存溢出这种问题的关注。

关于压测服务器:

本次选取了4台服务器用于压测,其中一台作为压力机,也就是控制其它几台机器一起运行脚本。所以这就需要配置jmeter的配置文件:jmeter.properties

Jmeter上传服务压测-基于Linux服务器

在配置文件中找到如图所示的远程ip设置,添加相应的服务器ip即可。

关于host配置:

这部分的工作,其实是为了均衡服务器的承载量,避免大量的操作执行在单一的一台服务器上,造成服务器过载而挂掉。此部分配置只需要在Linux下的host中添加配置即可。

执行测试

在Linux中执行脚本就比较简单了,在相应的目录下执行脚本,并将所需的结果保存为指定的文件即可,参考命令:

./jmeter -n -t 脚本文件(.jmx) -r -l 结果文件(.jtl)
           

-r : 指的是运行所有机器,若不写,只会运行当前压力机;

(注:测试时有不同并发的场景,这些需要自己在脚本文件中进行修改;所以在结果文件的命名上,建议使用时间节点来命名,便于之后统计结果时区分。)

测试结果处理

当所有场景都测试完成之后,建议将结果文件统一放在一个文件夹中,然后一并打包,导出。

总结

这里就不再分析讲述本次的测试结果了,在实际情况中,还需要我们酌情去统计和分析测试结果。在聚合报告中,主要关注的项还应是:平均响应时间、90%的响应时间、错误率以及TPS(吞吐量)等。

————————

欢迎大家讨论并指正不合理之处!

继续阅读