由于Jmeter是一个纯JAVA的应用,用GUI模式运行压力测试时,对客户端的资源消耗是相当惊人的,所以在进行正式的压测时一定要使用non-gui模式运行,如果并发数很高或者客户端的硬件资源比较一般的话,还可以以server模式用多个client进行分布式测试。一直有朋友问我这个分布式测试要怎么用,我就结合官方文档和自己的实际经验来谈一谈。
首先请先确保你的系统中环境都准备好了,否则在执行下文中的一些操作时可能会有一些异常抛出导致脚本执行失败
前置工作
JAVA_HOME正确设置(如果不会,请自行google)
JMeter及相关插件已安装好(对此步有疑问的,请移步到我的另一篇博客使用Jmeter创建ActiveMQ JMS POINT TO POINT请求,环境搭建、请求创建、插件安装、监听服务器资源等)
配置JMETER_HOME,步骤:
Linux & MacOS X
vim ~/.profile
在文件末尾增加以下代码:
export JMETER_HOME=/yourpath/apache-jmeter-x.y
#yourpath是你的Jmeter解压目录
#x.y是Jmeter版本,当然你也可以重命名此目录
运行以下命令使配置生效
source ~/.profile
在命令行输入 jemeter -v,如果打印出Jmeter的版本信息,说明环境配置成功
计算机-属性-高级系统设置-环境变量
点击新建,变量名输入:JMETER_HOME,变量值输入你的Jmeter解压路径
点击确定,然后编辑path,在变量值末尾加上%JMETER_HOME%\bin
设置好之后,验证一下配置是否成功,打开DOS窗口输入 jemeter -v,如果打印出Jmeter的版本信息,说明环境配置成功
必须要了解的一些信息
既然是要通过non-gui模式运行,那么我们就不得不去了解下在non-gui模式下jmeter命令的参数,下面是Jmeter官方文档中列出来的一些参数,中文注释部分为我加入的解释
-h, --help print usage information and exit #打印帮助信息 -v, --version print the version information and exit #打印版本信息 -p, --propfile {argument} the jmeter property file to use #运行时指定property文件,默认是使用JMETER_HOME/bin目录下的jmeter.properties,如果用户自定义有其它的配置,在这里加上 #用法如下: -p user.properties -q, --addprop {argument} additional property file(s) #其它配置文件,如JVM参数等等 -t, --testfile {argument} the jmeter test(.jmx) file to run #要运行的jmeter脚本 -j, --jmeterlogfile {argument} the jmeter log file #指定记录jmeter log的文件,默认为jmeter.log -l, --logfile {argument} the file to log samples to #记录采样器Log的文件 -n, --nongui run JMeter in nongui mode #以nongui模式运行jmeter -s, --server run the JMeter server #运行JMeter server -H, --proxyHost {argument} Set a proxy server for JMeter to use #代理服务器地址 -P, --proxyPort {argument} Set proxy server port for JMeter to use #代理服务器端口 -u, --username {argument} Set username for proxy server that JMeter is to use #代理服务器的用户名 -a, --password {argument} Set password for proxy server that JMeter is to use #代理服务器用户名对应的密码 -J, --jmeterproperty {argument}={value} Define additional JMeter properties #定义额外的Jmeter属性 -G, --globalproperty (argument)[=(value)] Define Global properties (sent to servers) e.g. -Gport=123 or -Gglobal.properties #定义发送给server的全局属性 #如:-Gport=123 或者-Gglobal.properties(指定监听server的端口) -D, --systemproperty {argument}={value} Define additional System properties #定义系统属性 -S, --systemPropertyFile {filename} a property file to be added as System properties #通过指定的property文件定义系统属性 -L, --loglevel {argument}={value} Define loglevel: [category=]level e.g. jorphan=INFO or jmeter.util=DEBUG #定义日志等级 -r, --runremote (non-GUI only) Start remote servers (as defined by the jmeter property remote_hosts) #启动远程server(在jmeter property中定义好的remote_hosts),公在non-gui模式下此参数才生效 -R, --remotestart server1,... (non-GUI only) Start these remote servers (overrides remote_hosts) #启动远程server(如果使用此参数,将会忽略jmeter property中定义的remote_hosts) -d, --homedir {argument} the jmeter home directory to use #Jmeter运行的主目录 -X, --remoteexit Exit the remote servers at end of test (non-GUI) #测试结束时,退出(在non-gui模式下) |