前言:

locust是完全基于python,是一个简单易用的分布式负载测试工具

Locust特性

使用Python编写模拟用户行为的代码,无需繁琐的配置

分布式可扩展,能够支持上百万用户

自带Web界面

不仅能测试web系统,也可以测试其它

Locust思想

在测试过程中,一群用户将访问你的网站。每个用户的行为由你编写的Python代码定义,同时可以从Web界面中实时观察到用户的行为。

Locust完全是事件驱动的,因此在单台机器上能够支持几千并发用户访问。与其它许多基于事件的应用相比,Locust并不使用回调,而是使用gevent,而gevent是基于协程的,可以用同步的方式来编写异步执行的代码。每个用户实际上运行在自己的greenlet中

http请求完全是基于requests库。Locust支持http、https协议,还支持测试其他协议,websocket等,只要采用Python调用对应的库就可以了

Locust和jmeter、lr优点对比3

性能测试很难在单机上获得很高的并发量,lr、jmeter这类工具采用进程和线程来压测,单机并发量不高。(一般都要用几台电脑做压力发射机)

ocust并发机制摈弃了进程和线程,采用协程(gevent)机制。协程避免了系统级资源调度,可以大大提高单机并发能力

locust的安装

cmd命令下执行 pip install locustio 进行安装

注:小波之前就安装过了~~就不在赘述了

安装完成以后可以查看 locust命令有哪些选项,键入locust --help命令可以查看

如果打算分布式运行locust则需要安装pyzmp

cmd命令下执行pip install pyzmq 执行安装

下面是小波对公司的一个接口进行压测例子

例如:编写名为locust_yace.py文件,如下:

在上面的代码中首先集成了TaskSet类来定义用户的行为,(比如访问网站的行为,或者接口请求的行为)紧接着HttpLocust类表示一个用户,这个用户具有哪些行为,以及该用户在执行下一个任务之前应该等待多长时间。

接下来就可以启动性能测试了~~

cmd命令进入到压测文件目录下,执行测试

-f locust_yace.py  指定性能压测文件

2.--host 指定被测试url的主机地址(IP地址)(如果是接口,就写接口地址即可)

接下来,通过浏览器访问localhost:8089

点击start swarming进行测试:

1.Type:请求类型;
2.Name:请求路径;
3.requests:当前请求的数量;
4.fails:当前请求失败的数量;
5.Median:中间值,单位毫秒,一般服务器响应时间低于该值,而另一半高于该值;
6.Average:所有请求的平均响应时间,毫秒;
7.Min:请求的最小的服务器响应时间,毫秒;
8.Max:请求的最大服务器响应时间,毫秒;
9.Content Size:单个请求的大小,单位字节;
10.reqs/sec:每秒钟请求的个数。

这个是通过浏览器测试的形式,可以通过测试场景设计的时间长度运行,压力测试时间(一般都是5分钟以上)足够后,需要手动点击stop按钮,结束压力测试。

最新文章

  1. sharepoint powershell 批量处理匿名访问
  2. mysql时间格式化,按时间段查询的MySQL语句
  3. btn css
  4. 参考例子,学习Func<T, TResult>委托
  5. Android7.0 Phone应用源码分析(二) phone来电流程分析
  6. 14Spring_AOP编程(AspectJ)_环绕通知
  7. JS创建自定义对象
  8. SqlDataAdapter怎么处理事务呢
  9. 编译Firebird的源码
  10. BZOJ 2301 Problem B(莫比乌斯反演)
  11. 手工部署Sqlserver CLR程序集
  12. 【bzoj4198】 Noi2015—荷马史诗
  13. ActionBar+DrawerLayout实现网易新闻客户端首页
  14. Visual Studio Code快速删除空行及几个常用快捷键总结
  15. Ansible第一篇:介绍及安装
  16. 一个简单的Quartz定时任务
  17. windows通过node环境搭建安装npm,cnpm,vue-cli
  18. 《Linux内核设计与实现》第4章读书整理
  19. BZOJ 1093 [ZJOI2007]最大半连通子图 - Tarjan 缩点
  20. SQLServer 学习笔记之超详细基础SQL语句 Part 10

热门文章

  1. iOS-Reactive Cocoa的常见用法
  2. ES6优雅的异步操作Promise()
  3. Java学习之第二天
  4. Ubuntu安装qwt步骤
  5. springboot使用自定义异常
  6. Keepalived高可用nginx
  7. iOS-键盘弹出或隐藏时调整输入框的位置
  8. 面试官:线程池如何按照core、max、queue的执行循序去执行?(内附详细解析)
  9. python基础整理(2)
  10. 2020年最佳Java调试工具(翻译)