本文以压测一个HTTP服务来说明Grinder的使用方法。本文的脚本是Windows脚本,Linux的脚本与此相似。需要指出的是Console只能部署在带有图形界面的操作系统上,否则启动时会报java.awt的异常。而Agent则不需要图形界面。
创建文件夹grinder-3.11-console和grinder-3.11-agent。将文件夹grinder-3.11下的所有文件和子文件夹同时复制给grinder-3.11-console和grinder-3.11-agent
配置Console
cd 到grinder-3.11-console下
创建配置文件grinder.properties。Console的grinder.properties优先级高于Agent的grinder.properties,如果二者有相同的配置项则最终执行Console的配置。
# 每个Agent开启多少个进程
grinder.processes=2
# 每个Agent进程开启多少个线程
grinder.threads=3
# 每一个线程执行多少遍测试脚本
grinder.runs=100
创建startConsole.cmd,假设项目的根目录是C:\document\project\grinder-3.11-console
set GRINDERPATH=C:\document\project\grinder-3.11-console
java -classpath %GRINDERPATH%\lib\grinder.jar net.grinder.Console
创建grinder.py
from net.grinder.script.Grinder import grinder
from net.grinder.script import Test
from net.grinder.plugin.http import HTTPRequest
test1 = Test(1, "Hello World")
request1 = HTTPRequest()
test1.record(request1)
class TestRunner:
def __call__(self):
result = request1.GET("http://192.168.16.15:8080/webservice?d=c_load_test ")
在cmd窗口运行如下命令,打开Console应用界面
C:\document\project\grinder-3.11-console>startConsole.cmd
2018-08-21 08:48:42,245 INFO org.eclipse.jetty.server.Server: jetty-7.6.1.v20120215
2018-08-21 08:48:42,417 INFO org.eclipse.jetty.server.AbstractConnector: Started SelectChannelConnector@:6373
配置Agent
cd到 grinder-3.11-agent目录下
创建startAgent.cmd
set GRINDERPATH=C:\document\project\grinder-3.11-agent
java -classpath %GRINDERPATH%\lib\grinder.jar net.grinder.Grinder %GRINDERPATH%\grinder.properties
创建grinder.properties
grinder.consoleHost=127.0.0.1
grinder.consolePort=6372
创建grinder.py,实际运行的时候会执行console目录下的grinder.py,但agent目录下这个grinder.py也必须有否则会报错。
from net.grinder.script.Grinder import grinder
from net.grinder.script import Test
test1 = Test(1, "Hello World")
class TestRunner:
def __call__(self):
在cmd窗口运行如下命令,启动Agent
C:\document\project\grinder-3.11-agent>startAgent.cmd
2018-08-21 11:26:21,395 INFO agent: The Grinder 3.11
2018-08-21 11:26:21,427 INFO agent: connected to console at localhost/127.0.0.1:6372
2018-08-21 11:26:21,427 INFO agent: waiting for console signal
在Console的进程标签页里,如果代理进程处于已连接状态,则准备就绪。
点击启动Worker进程,开始测试。
相关文章:
《分布式压测工具Grinder的示例教程 : headers及Cookie设置》