多语言展示
当前在线:842今日阅读:167今日分享:16

性能测试工具locust(一)

locust是一个使用简单的分布式负载测试工具。其目的是用于测试web或者其他系统,并确定系统能够处理多少并发用户数。locust的想法是一大群“蝗虫”去攻击你的服务器,每只“蝗虫”的行为是由你控制的,并且通过web界面上能够实时监控“蝗虫”的攻击情况。
工具/原料
1

locust

2

Python

方法/步骤
1

locust是一个使用简单的分布式负载测试工具。其目的是用于测试web或者其他系统,并确定系统能够处理多少并发用户数。locust的想法是一大群“蝗虫”去攻击你的服务器,每只“蝗虫”的行为是由你控制的,并且通过web界面上能够实时监控“蝗虫”的攻击情况。

2

为何选择locust:1、Locust是完全基于事件的,使用gevent库实现协程(微线程),所以它可以实现成千上万的并发用户数再单台负载机上2、Locust可以使用Python编写场景,不必使用沉重的UI和臃肿的XML。3、支持分布式、可扩展的4、通过web界面能够实时监控测试情况5、可以使用Python自己编写脚本测试任何协议的应用注:协程可以理解为cpu的中断,只不过这个实现是在一个线程里实现的

3

locust安装:1、pip install locustio2、pip install pyzmq 需要使用分布式需安装3、locust -V  如果正确查看到版本代表安装成功4、设置系统打开文件数大于当前机子要模拟的用户数#ulimit -n 65535注:如果使用大规模的性能测试,不建议安装在Windows,因为协程库gevent在Windows下性能差。

4

hello world例子:1、#vim  a.pyfrom locust import HttpLocust,TaskSet,task    class User1Tasks(TaskSet):        def on_start(self):        print 'do on_start.......'        @task(1)        def index1(self):            r=self.client.get('/test/index.html')            print r.text        @task(2)        def search1(self):            r=self.client.get('/test/search.html')            print r.text    class User1(HttpLocust):        task_set = User1Tasks        min_wait = 5000        max_wait = 9000        weight = 22、说明:class User1Tasks(TaskSet):定义用户的行为,业务脚本 on_start:在任何任务执行前执行,且只执行一次 @task(n):任务修饰器,代表该方法是一个任务。有多个task时,其中的n 代表执行该任务权重 self.client.get(path):采用Python的requests,使用方法一致。class User1(HttpLocust):一个模拟用户 host:测试服务器地址 task_set:指定使用的用户行为#一个用户执行每个任务之间的等待时间,从最小到最大中随机获取,默认是1,所以如果不等待 需要将这两个属性设置为0 min_wait: max_wait: weight:如果有多个模拟用户,当前这个模拟用户的权重(如有User1和User2分别设置权重1、2,如果测试时指定9个模拟用户数,那么会有3个模拟用户数执行User1任务,有6个模拟用户数执行User2任务)注:2.1、测试时会一个模拟用户会按task权重,随机选择一个task进行执行2.2、请求方法除了get还有post、delete、put、options等3、启动程序:locust -f filename.py --host=http://ip:port -P 8089

推荐信息