Locust

keywords

locust(用户): 代表了一个 “user” 用于发起请求。它的行为定义在任务集合task_set中(定义了任务的执行集合)。其他一些配置:任务之间的等待时间,超时设置。 taskset(任务场景): 包含要执行的任务集合。 run 即从执行任务里面随机选择一个task 到 执行队列(schedule_task) 然后 execute_task, TaskSequence(顺序任务集合): 上面的任务场景是随机执行 tasks,而这个是按照顺序执行 tasks。 LocustRunner(执行者):
执行用户的 runner/agent。可以执行(start_hatching)。分布式执行需要 MasterLocustRunner, 和 slave runner>

step by step

git clone https://github.com/locustio/locust.git
cd locust/example
# master 启动,10个用户 qps 100
locust -f basic.py --master --no-web -c 10 -r 100 --run-time 1m  --loglevel=DEBUG
# slave 启动
locust -f basic.py --slave --loglevel=DEBUG

result:

[2019-05-19 17:38:55,233] myersguo/INFO/root: Waiting for slaves to be ready, 0 of 1 connected

[2019-05-19 17:39:08,690] myersguo/INFO/locust.runners: Client u'myersguo_1aa023183b584394bfc4b5b946257d13' reported as ready. Currently 1 clients ready to swarm.
[2019-05-19 17:39:09,277] myersguo/INFO/locust.runners: Sending hatch jobs to 1 ready clients
[2019-05-19 17:39:09,278] myersguo/INFO/locust.main: Run time limit set to 60 seconds
[2019-05-19 17:39:09,278] myersguo/INFO/locust.main: Starting Locust 0.11.1

 Name                                                          # reqs      # fails     Avg     Min     Max  |  Median   req/s
--------------------------------------------------------------------------------------------------------------------------------------------
 GET /                                                             19   19(50.00%)      1       8      49  |      10    0.90
 GET /does_not_exist                                               23   23(50.00%)      12       7      50  |      10    1.10
 GET /stats/requests                                               10   10(50.00%)      10       8      13  |      10    0.70
--------------------------------------------------------------------------------------------------------------------------------------------
 Total                                                             52  52(100.00%)

keywords others

对比一下 loadrunner 的技术。

我们看到 user, scenario(task test), script, agent, stats 这几个是基本的概念。