【转】Locust-工具核心原理分析
Locust工具在市场上不如Loadrunner / JMeter流行,使用的范围也没有那么广,但不可否认其是一款很不错的工具。我个人觉得Locust使用不是那么广泛,主要是因为一下方式:
Locust需要一定的Python编程基础,有一定的学习成本。
Locust既有的协议支持有,主要有HTTP等。很多协议只要Python支持即可。
UI操作界面,很多时候,用户在使用的时候,会考虑上手容易度,Loadrunner/JMeter都有很强的用户交互设计,在客户端强大的功能下面,用户不需要太强的编程能力,也可以完成场景的模拟和脚本的编写。
但是未来压测工具的趋势,一定是可编程性占据主流。主要原因主要如下:
可编程性可以和开发团队有更好的贴合度,很多传统压测工具不好/不能模拟的场景,都可以通过编码的方式去实现,让测试更加灵活,覆盖度有保证。并且开发人员也可以去实现压测场景脚本。而性能测试人员可以更加注重去分析问题
省钱。这个理由会让人无法抗拒。不过可能有人要反驳了,JMeter等开源工具不也是免费的吗?是的,软件本身是免费的,但是使用起来不一定是免费的。现在比较流行云平台,所有的环境(开发/测试/UAT/线上)基本都部署在上面。而云平台的一个特性就是按需申请和按需收费。那么在使用诸如Loadrunner/JMeter 这类采用进程和线程的工具,是比较耗费内存的。这也就决定了,在单机上很难模拟出高并发,而Locust这类工具在这方面的表现就要好的多。为啥?归根结底就是资源多使用效率,Locust采用了gevent开发框架,底层利用greenlet微线程机制,其中采用了epoll事件监听机制,监听什么?比如我们利用多线程去模拟多用户,线程1执行到了服务器传输内容,而CPU也正在等待网络IO,而epoll机制就开始起作用了,它会将线程资源转向执行其他线程任务。而当耗时的网络IO或者磁盘IO结束时,greenlet会适时将CPU资源转回去继续执行线程1的任务。综上,单机并发,Locust就可以占据优势,并且Locust也能实现分布式测试,所以从经济性上考虑,它是省钱的。
平台性。很多事情如果平台级的产品都支持,那么推广或者优势是可以得到保证的。其他的云平台不是很清楚,我知道GCP平台是支持Locust的,也给出了一些解决方案。
【转】Locust-工具核心原理分析的更多相关文章
- Java Reference核心原理分析
本文转载自Java Reference核心原理分析 导语 带着问题,看源码针对性会更强一点.印象会更深刻.并且效果也会更好.所以我先卖个关子,提两个问题(没准下次跳槽时就被问到). 我们可以用Byte ...
- web压测工具http_load原理分析
一.前言 http_load是一款测试web服务器性能的开源工具,从下面的网址可以下载到最新版本的http_load: http://www.acme.com/software/http_load/ ...
- Spring核心原理分析之MVC九大组件(1)
本文节选自<Spring 5核心原理> 1 什么是Spring MVC Spring MVC 是 Spring 提供的一个基于 MVC 设计模式的轻量级 Web 开发框架,本质上相当于 S ...
- Redis cluster的核心原理分析
一.节点间的内部通信机制 1.基础通信原理 (1)redis cluster节点间采取gossip协议进行通信 跟集中式不同,不是将集群元数据(节点信息,故障,等等)集中存储在某个节点上,而是互相之间 ...
- 开源配置中心xxl-conf的核心原理分析
XXL-CONF是一款轻量级的开源配置中心项目,由国内大牛许雪里开发.下面是官方对其优点作出的描述: 一个轻量级分布式配置管理平台,拥有"轻量级.秒级动态推送.多环境.跨语言.跨机房.配置监 ...
- drizzleDumper的原理分析和使用说明
https://blog.csdn.net/qq1084283172/article/details/53561622 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog. ...
- 深入解析Koa之核心原理
这篇文章主要介绍了玩转Koa之核心原理分析,本文从封装创建应用程序函数.扩展res和req.中间件实现原理.异常处理的等这几个方面来介绍,写的十分的全面细致,具有一定的参考价值,对此有需要的朋友可以参 ...
- DexHunter在Dalvik虚拟机模式下的脱壳原理分析
本文博客地址:http://blog.csdn.net/qq1084283172/article/details/78494671 在前面的博客<DexHunter的原理分析和使用说明(一)&g ...
- Redis核心原理与实践--Redis启动过程源码分析
Redis服务器负责接收处理用户请求,为用户提供服务. Redis服务器的启动命令格式如下: redis-server [ configfile ] [ options ] configfile参数指 ...
随机推荐
- Spring Cloud Admin健康检查 邮件、钉钉群通知
源码地址:https://github.com/muxiaonong/Spring-Cloud/tree/master/cloudadmin Admin 简介 官方文档:What is Spring ...
- 如何理解Vue.js中的ref及$ref,$
1.vue官方文档 首先我们来看一下vue官方是怎么解释的 好了,我知道很多刚接触的vue的小白其实都不太看的懂官方文档在讲什么,下面我用自己的话翻译一下. 2.ref以及$ref 通过 ref 标注 ...
- 安全可靠国产系统背景下的应用开发应有.NET Core的一席之地
在中美当前背景下的安全可靠国产系统(简称安可),安可产业要实现技术自主可控,需要在四个层面逐步实现:基础硬件设施,如芯片.服务器.存储.交换机.路由器:底层软件,包括操作系统.数据库.中间件等:应用软 ...
- Python中print()函数不换行的方法以及分隔符替换
一.让print()函数不换行 在Python中,print()函数默认是换行的.但是,在很多情况下,我们需要不换行的输出(比如在算法竞赛中).那么,在Python中如何做到这一点呢? 其实很简单.只 ...
- python读文件出现错误解决方法
python读文件经常会出现 UnicodeDecodeError: 'gbk' codec can't decode byte 0xbd in position 764: illegal multi ...
- vim缩写
vim缩写可以简化输入,如在Python调试中的logging.warning可以缩写为lgw,在使用时会提高效率. 一.设置缩写 在~/.vimrc增加: :abbreviate lgw loggi ...
- Fiddler添加显示ip和响应时间
1. 打开Fiddler,在菜单Rules 栏里点击Customize Rules…或者使用快捷键CTRL+R打开Fiddler ScriptEditor 图 1 Customize Rules 2. ...
- Resharper 2020 免费破解版
如果你是一名.NET开发人员,但是你却不使用ReSharper,那么你就不是一个合格的码农了,因为这是一个强大的神器,你值得拥有!当然,用它的代价是,启动VS会变得非常慢,非常卡,但是需要知道,磨刀不 ...
- spring cloud 路由
Spring Cloud Feign:用于微服务之间,只映射内网ip Spring Cloud Gateway:用于服务端,对外开放的接口,对外统一访问gateway映射的ip 是这样吗? 但是这样权 ...
- MySQL索引凭什么能让查询效率提高这么多?
点赞再看,养成习惯,微信搜一搜[三太子敖丙]关注这个喜欢写情怀的程序员. 本文 GitHub https://github.com/JavaFamily 已收录,有一线大厂面试完整考点.资料以及我的系 ...