Locust项目压力测试总结

一、简介

Locust是一款使用Python编写的压力测试工具,本篇总结会介绍在实际测试过程中遇到的问题,不会介绍入门的操作,详情可以看官网的入门教程。

https://www.locust.io/

使用Locust的原因是因为可以模拟的用户数量可以通过添加硬件来增长,相对于jmeter来说配置更加方便。

二、需求描述

项目采用node+redis+oracle的模式,需要测试出单台服务器的性能瓶颈。

三、实际测试

环境的搭建:服务器上只需要安装好Python2.7及以上的版本,然后通过pip安装locust就完成了搭建。

脚本编写:根据需求编写好python脚本,放到服务器上如 locu.py。

脚本运行:通常使用的是主从模式来运行脚本,这样能够方便进程多开。

    locust -f locu.py --master   该命令运行后会生成一个主进程进行管理,主进程只需要一个。

    locust -f locu.py --slave   该命令运行后会有一个子进程启动,根据需要可以多次运行就会开启多个子进程,子进程用来模拟用户数量。

以上命令运行后或默认开启8089 端口,通过浏览器访问本地8089端口就能进入web界进行控制。

访问地址: http://localhost:8089,slave 就是开启的子进程数量。

四、防坑指南

1.如果实在Linux服务器运行locust,尴尬的是没有图形界面操作web。

解决措施:一般连接服务器都是通过xshell来连接,我们可以通过xshell自带隧道功能建立一条隧道,将服务器8089端口的信息传输到本地计算机,这样直接在本地计算的浏览器就能对服务器进行控制。

xshell >隧道窗格>转移规则>右键添加

2.后台运行命令,防止命令中断

通过xshell访问到服务器后,如果运行locust -f locu.py --master ,一旦xshell退出,命令也会自动中断。因为通过xshell登录所运行命令都属于登录用户进程的子进程,一旦断开连接主进程会自动关闭,该进程下所有命令都会自动关闭。所以如果是长时间运行的话最好把命令放在后台运行。

(locust -f load.py --master &)   该命令表示把该进程放置到后台运行,就算用户断开连接也会一直运行。

放置到后台后果想要关闭命令就先使用ps -ef|grep locust 查看进程号,再用kill pid 来杀掉进程。

3.用户数量的详细解释

web界面的user 数量表示并发数,也就是每次访问的并发连接数。实践的时候用户数量是300,表示每次访问有300个用户同时访问,吞吐量能达到2000/s,说明在一秒的时间内服务器响应了大约7次,那么300的用户耗费的时间就是140ms左右。

4.用户数量与slvae关系

用户数量是300,slave为3,那么每个slave会平均分配发送的用户量100,与jmerter分布式不一样。

五、最终测试结果

服务器配置:CPU 8核 内存16G  
承受最大业务量900万次请求数,占用内存12G,占用磁盘空间23G。
redis与业务量关系 80万请求数占用1G redis内存
磁盘与业务量关系  80万请求数占用2G 磁盘空间

原文地址:https://www.cnblogs.com/maoxianfei/p/7987217.html