【转】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的,也给出了一些解决方案。
最新文章
- js小练习去掉指定的字符组成一句话输出
- <;s:property value=";";/>; 怎么截取返回值的固定长度的字符串
- PHP5.6.15连接Sql Server 2008配置方案
- 真正解决问题:maven eclipse tomcat java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
- python curses使用
- Linux C程序内存空间
- [Outlook]设置邮件自动接收时间
- LeetCode:Climbing Stairs(编程之美2.9-斐波那契数列)
- javaweb学习总结二十一(servlet开发入门、servlet生命周期以及调用过程)
- 3月3日(2) Search Insert Position
- JTA
- 开源代码——Crouton
- Hadoop之HDFS原理及文件上传下载源码分析(下)
- git的使用[转]
- vue 使用axios 跨域请求数据的问题
- php解析ini,conf文件
- 由浅入深的讲述Get和Post的区别
- Mysql字符串切分
- create react app遇到的问题
- <;Android 开源库>; PhotoPicker 从头到脚
热门文章
- 从《三体》到“中美科技战”,3分钟理解“网络”D丝为什么要迎娶“算力”白富美
- yield 的使用
- Spring Security 入门学习--数据库认证和授权
- 从零开始的SpringBoot项目 ( 三 ) 项目打包( war包篇 )
- SEO外包好还是自己组建团队
- SpringBoot事务使用和回滚
- RTS寻路算法
- 发送信息到邮箱的第三方扩展库PHPMailer使用方法
- jinja2快速实现自定义的robotframework的测试报告
- String.format与搭配转化符的使用