我们在之前4个章节中,先后介绍了Python Locust源码解析,并通过如上设计实现了基于Robot Framework的关键字驱动的接口性能自动化测试,相关章节链接如下:
多进程分布式
在前面章节中,介绍的基于Robot Framework实现关键字驱动接口性能测试,使用的单进程模式实现,由于单进程模式的原因,并不能完全发挥压力机所有处理器的能力,因此大多用于调试脚本和小并发压测的情况。
当并发压力要求较高时,就需要用到Locust的多进程分布式运行模式。从字面意思上看,就是多台压力机同时运行,每台压力机分担负载一部分的压力生成。的确,Locust支持任意多台压力机(一主节点、多从节点)的分布式运行模式,如下。
进程分布式运行模式还有另外一种方式,就是在同一台压力机上开启多个slave节点的情况。这是因为当前阶段大多数计算机的CPU都是多处理器,单进程运行模式下只能用到一个处理器的能力,而通过在一台压力机上运行多个slave节点,就能调用多个处理器的能力了。比较好的做法是,如果一台压力机有N个处理器内核,那么就在这台压力机上启动一个master节点,N个slave节点。当然,我们也可以启动N的倍数个slave节点,不过效果跟N个差不多,因此只需要启动N个slave节点即可,如下。
代码设计
我们将Python Locust基于Robot Framework实现关键字驱动接口性能测试二
中 负载控制关键字 进行优化,改为多进程模式即可,如下。
主节点代码设计
不管是单机多进程,还是多机负载模式,运行方式都是一样的,都是先运行一个master节点,再启动多个slave节点。
启动master时,需要使用 –master 参数。同样的,如果要使用8089以外的端口,还需要使用 -P或–port 参数指定端口 ,另外如果存在多个性能任务在同一个环境运行的情况,不同任务需要指定不同的端口 。
从节点代码设计
master节点启动后,还需要启动slave节点才能执行测试任务。
启动slave节点时需要使用 –slave 参数,如果slave与master不在同一台机器上,还需要通过 –master-host 参数再指定master节点的IP地址。
我们采用本机多进程模式。
主程序代码设计
我们默认使用本机cpu数进行多进程分布运行,但考虑到服务器64核,实际测试场景不需要这么多,所以做了一些判断,最多使用4进程进行分布式运行。
总结
通过这五个章节,对Locust从源码到应用全面的介绍,相信大家对Locust的功能特性和应用已经相对熟悉了,将其应用到实际项目中,应该不是什么难事。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!