更新时间:2023-08-22 02:21:38
你们好,最近小艾特发现有诸多的小伙伴们对于locusts,locust这个问题都颇为感兴趣的,今天小活为大家梳理了下,一起往下看看吧。
1、 locust是一个简单的分布式负载测试工具。其目的是测试web或其他系统,并确定系统可以处理多少并发用户。locust的想法是一大群蝗虫会攻击你的服务器。
2、 每个“蝗虫”的行为都由你来控制,通过web界面可以实时监控“蝗虫”的攻击。
3、 为什么选择locust:
4、 1.Locust是完全基于事件的,使用gevent库实现协程(微线程),所以可以在单个负载机上实现上千个并发用户。
5、 2.Locust可以用Python写场景,不需要使用笨重的UI和臃肿的XML。
6、 3.支持分布式和可扩展。
7、 4.可以通过web界面实时监控测试情况。
8、 5.您可以使用Python编写自己的脚本来测试任何协议的应用。
9、 注意:协程可以理解为cpu中断,但是这个实现是在一个线程中实现的。
10、 locust安装:
11、 Pip installationlocustio
12、 2.pip安装pyzmq需要使用分布式安装。
13、 3.locust -V如果版本查看正确,则安装成功。
14、 4.将系统打开的文件数设置为大于当前机器模拟的用户数。
15、 #ulimit -n 65535
16、 注意:如果使用大规模性能测试,不建议安装在Windows中,因为gevent在Windows下性能较差。
17、 Hello world example:
18、 1、#vim a.py
19、 fromlocust import HttpLocust,TaskSet,task
20、 class User1Tasks(TaskSet):
21、 def on_start(self):
22、 print 'do on_start.'
23、 @task(1)
24、 def index1(self):
25、 r=self.client.get('/test/index.html')
26、 print r.text
27、 @task(2)
28、 def search1(self):
29、 r=self.client.get('/test/search.html')
30、 print r.text
31、 class User1(HttpLocust):
32、 task_set=User1Tasks
33、 min_wait=5000
34、 max_wait=9000
35、 weight=2
36、 2.描述:
37、 类User1Tasks(TaskSet):定义用户的行为和业务脚本。
38、 On_start:在执行任何任务之前执行,并且只执行一次。
39、 @task(n):任务修饰符,表示该方法是一个任务。当有多个任务时,n个任务
40、 表示执行此任务的权重。
41、 Self.client.get (path): Requests in computer programming language are used in the same way.
42、 Class User1(HttpLocust): a simulated user.
43、 主机:测试服务器地址
44、 task_set:指定使用的用户行为
45、 #一个用户执行每个任务之间的等待时间,从最小到最大中随机获取,默认是1,所以如果不等待需要将这两个属性设置为0
46、 min_wait:
47、 max_wait:
48、 weight:如果有多个模拟用户,当前这个模拟用户的权重(如有User1和User2分别设置权重1、2,如果测试时指定9个模拟用户数,那么会有3个模拟用户数执行User1任务,
49、 有6个模拟用户数执行User2任务)
50、 注:
51、 2.1、测试时会一个模拟用户会按task权重,随机选择一个task进行执行
52、 2.2、请求方法除了get还有post、delete、put、options等
53、 3、启动程序:locust -f filename.py --host=http://ip:port -P 8089
以上就是locust这篇文章的一些介绍,希望对大家有所帮助。