艾特商业网

locusts(locust)

更新时间:2023-08-22 02:21:38

导读 你们好,最近小艾特发现有诸多的小伙伴们对于locusts,locust这个问题都颇为感兴趣的,今天小活为大家梳理了下,一起往下看看吧。1、locust

你们好,最近小艾特发现有诸多的小伙伴们对于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这篇文章的一些介绍,希望对大家有所帮助。

免责声明:本文由用户上传,如有侵权请联系删除!