【locust】使用locust + boomer实现对接口的压测
目录
背景
环境安装
脚本编写
master
slave节点(golang/boomer)
问题
资料获取方法
背景
很早之前,考虑单机执行能力,使用locust做过公司短信网关的压测工作,后来发现了一个golang版本的locust,性能是python版本的5到10倍以上,但是一直没有机会使用。
最近公司想做一个性能测试平台,技术选型要求和开发的语言一致,即golang,所以我想到了boomer,本文为boomer的使用记录。
环境安装
开发环境 | 安装 |
---|---|
Python 3.7 | 略 |
locust 0.11.0 | pip install locustio |
golang | 略 |
boomer | go get github.com/myzhan/boomer |
注:最新版本的boomer兼容了goczmq,需要将locust升级到较高版本才能完成兼容。
脚本编写
master
这部分的代码不重要,只要能启动就行。
from locust import Locust, TaskSet, taskclass MyTaskSet(TaskSet):@task(20)def hello(self):passclass Dummy(Locust):task_set = MyTaskSet
slave节点(golang/boomer)
package mainimport ("bytes""encoding/json""fmt""io/ioutil""log""net/http""time""github.com/myzhan/boomer"
)func getDemo() {start := time.Now()resp, err := http.Get("http://httpbin.org/get?name=Detector")if err != nil {log.Println(err)return}defer resp.Body.Close()fmt.Println(resp.Status)elapsed := time.Since(start)if resp.Status == "200 OK" {boomer.RecordSuccess("http", "sostreq", elapsed.Nanoseconds()/int64(time.Millisecond), int64(10))} else {boomer.RecordFailure("http", "sostreq", elapsed.Nanoseconds()/int64(time.Millisecond), "sostreq not equal")}
}func postDemo() {start := time.Now()info := make(map[string]interface{})info["name"] = "Detector"info["age"] = 15info["loc"] = "深圳"// 将map解析未[]byte类型bytesData, _ := json.Marshal(info)// 将解析之后的数据转为*Reader类型reader := bytes.NewReader(bytesData)resp, _ := http.Post("http://httpbin.org/post","application/json",reader)body, _ := ioutil.ReadAll(resp.Body)fmt.Println(string(body))elapsed := time.Since(start)if resp.Status == "200 OK" {boomer.RecordSuccess("http", "sostreq", elapsed.Nanoseconds()/int64(time.Millisecond), int64(10))} else {boomer.RecordFailure("http", "sostreq", elapsed.Nanoseconds()/int64(time.Millisecond), "sostreq not equal")}
}func main() {task1 := &boomer.Task{Name: "sostreq",// The weight is used to distribute goroutines over multiple tasks.Weight: 20,Fn: getDemo,}task2 := &boomer.Task{Name: "sostreq",// The weight is used to distribute goroutines over multiple tasks.Weight: 10,Fn: postDemo,}boomer.Run(task1, task2)
}
实际效果如下:
问题
Failed to execute dot. Is Graphviz installed? Error: exec: "dot": executable file not found in $PATH
资料获取方法
【留言777】
各位想获取源码等教程资料的朋友请点赞 + 评论 + 收藏,三连!
三连之后我会在评论区挨个私信发给你们~
相关文章:
![](https://img-blog.csdnimg.cn/f3fc05e2702843eea3e2d1a384ee94ef.png)
【locust】使用locust + boomer实现对接口的压测
目录 背景 环境安装 脚本编写 master slave节点(golang/boomer) 问题 资料获取方法 背景 很早之前,考虑单机执行能力,使用locust做过公司短信网关的压测工作,后来发现了一个golang版本的locust,性能…...
![](https://img-blog.csdnimg.cn/img_convert/3535f7a96afe9da799bc6a581383e99b.jpeg)
亿欧智库:2023中国宠物行业新趋势洞察报告(附下载)
关于报告的所有内容,公众【营销人星球】获取下载查看 核心观点 户外赛道本质上迎合了全球共性需求的增长,从养宠意愿的转化到养宠生活的需求,多层次的需求推动行业发展新趋势 从需求端进行分析,可以将养宠意愿的转化分为三个层…...
![](https://img-blog.csdnimg.cn/img_convert/09b991333386192d7e7c745bcd64855c.jpeg)
时序数据库 TDengine 与 WhaleStudio 完成相互兼容性测试认证
近年来,开源及其价值获得社会各界的广泛认可,无论是国家政策导向还是企业数字化转型,都在加速拥抱开源。对于如操作系统、数据库等基础软件来说,开源更是成为驱动技术创新的有力途径。 在此背景下,近日,涛…...
![](https://img-blog.csdnimg.cn/img_convert/f13afb3e2066f0746c9ff414cb120028.png)
Spring-1-深入理解Spring XML中的依赖注入(DI):简化Java应用程序开发
学习目标 前两篇文章我们介绍了什么是Spring,以及Spring的一些核心概念,并且快速快发一个Spring项目,以及详细讲解IOC,今天详细介绍一些DI(依赖注入) 能够配置setter方式注入属性值 能够配置构造方式注入属性值 能够理解什么是自动装配 一、…...
![](https://img-blog.csdnimg.cn/da7d9e75a4f34385a0b60b565c03ed6f.png#pic_center)
负载均衡–HAProxy安装及搭建tidb数据库负载服务
作为一名开发人员,随着经验的增加和技术的沉淀,需要提高自己架构方面的知识,同时对于一个企业来说,搭建一套高可用、高性能的技术架构,对于公司的业务开展和提高服务的性能也是大有裨益的。本文重点从软件安装和搭建ti…...
![](https://www.ngui.cc/images/no-images.jpg)
Django各种缓存的配置
Django提供了多种缓存后端,如内存缓存、文件缓存、数据库缓存、Memcached和Redis等。根据项目需求选择合适的缓存后端。 settings配置 在Django项目的settings.py文件中,找到或新增CACHES配置项。根据所选的缓存后端,配置相应的参数。以下是…...
![](https://img-blog.csdnimg.cn/6ec0a609957a4fbd86fd6ccff31bb167.png)
实现跨域的几种方式
原理 前后端的分离导致了跨域的产生 跨域的三要素:协议 域名 端口 三者有一个不同即产生跨域 例如: http://www.csdn.com https://www.csdn.com 由于协议不同,端口不同而产生跨域 注:http的默认端口80,https的默…...
![](https://img-blog.csdnimg.cn/ec0a5997da464299b93cca93cccaf6b4.png)
OpenCV: 对“google::protobuf::internal::Release_CompareAndSwap”的未定义
解决办法: 需要在文件 protobuf/src/google/protobuf/stubs/atomicops_internals_generic_gcc.h 中的以下补丁 inline Atomic64 Release_CompareAndSwap(volatile Atomic64* ptr, Atomic64 old_value, …...
![](https://www.learnfk.com/guide/images/wuya.png)
无涯教程-Perl - References(引用)
Perl引用是一个标量数据类型,该数据类型保存另一个值的位置,该值可以是标量,数组或哈希。 创建引用 变量,子程序或值创建引用很容易,方法是在其前面加上反斜杠,如下所示: $scalarref \$foo; $arrayref …...
![](https://img-blog.csdnimg.cn/a307b049eba548b581250b61709176ec.jpeg)
马斯克收购AI.com域名巩固xAI公司地位;如何评估大型语言模型的性能
🦉 AI新闻 🚀 AI拍照小程序妙鸭相机上线商业工作站并邀请摄影师进行内测 摘要:AI拍照小程序妙鸭相机将上线面向商业端的工作站,并邀请摄影师进行模板设计的内测。妙鸭相机希望为行业提供更多生态产品,扩大行业规模&a…...
![](https://img-blog.csdnimg.cn/548e45b1ecb9453a862cdae092e0780d.png)
uni-app:实现点击按钮出现底部弹窗(uni.showActionSheet+自定义)
一、通过uni.showActionSheet实现底部选择 效果 代码 <template><view><button click"showActionsheet">点击打开弹窗</button></view> </template><script> export default {methods: {showActionsheet() {uni.showAct…...
![](https://www.ngui.cc/images/no-images.jpg)
flume系列之:监控zookeeper的flume配置写入节点,新增和删除flume agent节点,通过ansible自动部署和卸载flume agent
flume系列之:监控zookeeper的flume配置写入节点,新增和删除flume agent节点,通过ansible自动部署和卸载flume agent 一、相关技术二、流程梳理三、部署和删除flume agent效果四、监控zookeeper节点五、新增zookeeper节点部署flume agent六、删除zookeeper节点删除flume agen…...
![](https://img-blog.csdnimg.cn/ee7208b7e45741dbb451a2ed5a539a5f.png)
了解以太网通信中的九阳神功 - SOME/IP协议
智能座舱SOME/IP通信 概述SOME/IP基础协议SOME/IP SD协议通信行为流程开机流程关机行为行为时序总结概述 SOME/IP协议是目前国内座舱SOA化应用比较广泛的一种ECU或车辆网络内设备之间交换数据的网络通信协议。它允许不同车辆组件,如发动机控制单元、信息娱乐系统、车身控制模…...
![](https://www.ngui.cc/images/no-images.jpg)
redis List类型命令
在Redis中,List(列表)是一种有序的、可重复的数据结构,它支持插入、删除和获取元素的操作。以下是一些常见的Redis List类型命令: LPUSH:将一个或多个值从列表的左侧插入。LPUSH key value1 value2 ...其中…...
![](https://www.ngui.cc/images/no-images.jpg)
【博客685】prometheus 出现NaN场景以及如何去除干扰(Not a Number)
prometheus 出现NaN场景以及如何去除干扰(Not a Number) 1、在prometheus中使用NaN来表示无效数值或者结果 场景: 一些监控系统使用 NaN 作为空值或缺失值,但在 Prometheus 中 NaN 只是另一个浮点值。Prometheus 表示缺失数据的方式是让数据缺失。Prom…...
![](https://img-blog.csdnimg.cn/679a7650d2514ea3bd39d4570d3ec3d7.png)
【计算机网络】网络层协议 -- ICMP协议
文章目录 1. ICMP协议简介2. ICMP协议格式3. ping命令4. ping命令与端口号没有关系!!!5. traceroute命令 1. ICMP协议简介 ICMP(Internet Control Message Protocol,控制报文协议),用于在IP主机…...
![](https://www.ngui.cc/images/no-images.jpg)
机器学习---facebook的案例学习
import pandas as pd import matplotlib.pyplot as plt import seaborn as sbn from sklearn.model_selection import train_test_split,GridSearchCV from sklearn.preprocessing import StandardScaler from sklearn.neighbors import KNeighborsClassifier # 使用pandas读…...
![](https://img-blog.csdnimg.cn/dc3ef45a3e5a4b09a98f8328c765ec8b.png)
OpenMMLab MMDetectionV3.1.0-SAM(环境安装、模型测试、训练以及模型后处理工具)
OpenMMLab Playground 概况 当前通用目标检测的研究方向正在朝着大型多模态模型发展。除了图像输入之外,最近的研究成果还结合了文本模式来提高性能。添加文本模态后,通用检测算法的一些非常好的属性开始出现,例如: 可以利用大量…...
![](https://img-blog.csdnimg.cn/a9373228c4f647798c5e364935cee3a8.png)
ios_base::out和ios::out、ios_base::in和ios::in、ios_base::app和ios::app等之间有什么区别吗?
2023年8月2日,周三晚上 今天我看到了这样的两行代码: std::ofstream file("example.txt", std::ios_base::out);std::ofstream file("example.txt", std::ios::out);这让我产生了几个疑问: 为什么有时候用ios_base::o…...
![](https://www.ngui.cc/images/no-images.jpg)
PostgreSQL 使用SQL
发布主题 设置发布为true 这个语句是针对 PostgreSQL 数据库中的逻辑复制功能中的逻辑发布(Logical Publication)进行设置的。 PostgreSQL 中,逻辑复制是一种基于逻辑日志的复制方法,允许将数据更改从一个数据库实例复制到另一…...
![](https://www.ngui.cc/images/no-images.jpg)
Shell编程基础(十四)文本三剑客(grep)
文本三剑客(grep) 使用场景基本使用返回值参数 使用场景 主要用于查找,过滤文本数据;该数据可以来自文件,也可以来自管道流等等。 grep除了原有的实现,后来还出现了以下扩展实现 egrep:支持扩展…...
![](https://img-blog.csdnimg.cn/95325321e56b48f09f669e7328146538.png)
Linux root用户执行修改密码命令,提示 Permission denied
问题 linux系统中(ubuntu20),root用户下执行passwd命令,提示 passwd: Permission denied ,如下图: 排查 1.执行 ll /usr/bin/passwd ,查看文件权限是否正确,正常情况是 -rwsr-xr…...
![](https://img-blog.csdnimg.cn/eacafa161a0c4ef7af192c653c8416db.png)
Java面向对象学习第三部分
一、Static修饰符 static是静态的意思,基本概念如下: Static分类: 一般我们分类都是按照是否使用static修饰进行分类。分为静态变量(类变量)、实例变量。 静态变量和实例变量的比较: 比较,…...
![](https://img-blog.csdnimg.cn/eba6a102a2654811a6f8d3260b88d0e4.png)
python+vue生成条形码码并展示
需求 最近想做一个小工具,大概要实现这样的效果:后端生成条形码后,不保存到服务器,直接返回给前端展示。 大概思路是,通过 python-barcode库 生成条码的字节流,生成字节流后直接编码成base64格式返回给前…...
![](https://img-blog.csdnimg.cn/img_convert/20a0f2a197eea336efacdf9ffff49cd6.png)
在线高精地图生成算法调研
1.HDMapNet 整体的网络架构如图所示,最终的Decoder输出三个分支,一个语义分割,一个embedding嵌入分支,一个方向预测。然后通过后处理将这些信息处理成向量化的道路表示。 img2bev的方式之前有IPM,通过假设地面的高度都…...
![](https://img-blog.csdnimg.cn/8eea622ef0054d7db93d7b52bc1e716e.png)
【干货】商城系统的重要功能特性介绍
电子商务的快速发展,商城系统成为了企业开展线上销售的重要工具。一款功能强大、用户友好的商城系统能够有效提升企业的销售业绩,提供良好的购物体验。下面就商城系统的重要功能特性作一些简单介绍,帮助企业选择合适的系统,打造成…...
![](https://img-blog.csdnimg.cn/96f3390a51cc49a2953bfed8a07f8655.png)
MYSQL06高级_为什么使用索引、优缺点、索引的设计、方案、聚簇索引、联合索引、注意事项
文章目录 ①. 为什么使用索引②. 索引及其优缺点③. InnoDb - 索引的设计④. InnoDb中的索引方案⑤. 索引 - 聚簇索引⑥. 索引 - 二级索引⑦. B树索引的注意事项⑧. MyISAM中索引方案 ①. 为什么使用索引 ①. 索引是存储引擎用于快速找到数据记录的一种数据结构,就好比去图书馆…...
![](https://img-blog.csdnimg.cn/b77d184d1d7a489c8f7ded3b8b7efb39.png#pic_center)
LeetCode 130. 被围绕的区域
题目链接:130. 被围绕的区域 题目描述 给你一个 m x n 的矩阵 board ,由若干字符 ‘X’ 和 ‘O’ ,找到所有被 ‘X’ 围绕的区域,并将这些区域里所有的 ‘O’ 用 ‘X’ 填充。 示例1: 输入:board [[“…...
![](https://img-blog.csdnimg.cn/img_convert/62e9b2d7bfbe412f0fc281de1869ffba.png)
python中2等于2.0吗,python中【1:2】
本篇文章给大家谈谈python中2等于2.0吗,以及python中【1:2】,希望对各位有所帮助,不要忘了收藏本站喔。 变量和赋值 Python中的变量不需要声明, 直接定义即可. 会在初始化的时候决定变量的 “类型” 使用 来进行初始化和赋值操作 定义变量时…...
![](https://www.ngui.cc/images/no-images.jpg)
【2023年11月第四版教材】《第2章-信息技术发展(第一部分)》
《第2章-信息技术发展(第一部分)》 章节说明1 计算机软硬件2 计算机网络2.1 网络的作用范围2.2 OSI模型2.3 广域网协议2.4 网络协议2.5 TCP/IP2.6 软件定义网络(SDN)2.7 第五代移动通信技术 章节说明 大部分为新增内容࿰…...
![](/images/no-images.jpg)
如何自己建立网站/公司如何在百度宣传
Dubbo自定义Filter统一处理异常参考文章: (1)Dubbo自定义Filter统一处理异常 (2)https://www.cnblogs.com/gossip/p/11734654.html 备忘一下。...
![](/images/no-images.jpg)
网站discuz迁移怎么做/seo网站的优化流程
好长的的解释啊啊啊啊啊,看得脑袋有点胀,不看了,反正都说基本用不上,我就先做个记录,等过几天再看。转载于:https://blog.51cto.com/13502993/2147847...
![](https://img-blog.csdnimg.cn/2018122510121520.gif)
58这种网站怎么做/重庆网站
一、在图形界面显示图片的两种方法 一般情况下,想要在GUI中显示图片,我们会通过: – 实例化一个QLable()部件; – 实例化一个QPixmap()图形类; – 通过QLabel()部件的setPixmap()方法设置QLabel()部件的图形ÿ…...
![](https://img-blog.csdnimg.cn/img_convert/6fc6f5e0ecc4d593e7c194b2599c8004.jpeg)
云南网站建/举例说明什么是seo
Databend 是一款现代云数仓。专为弹性和高效设计,为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务:https://app.databend.com 。 Whats On In Databend 探索 Databend 本周新进展,遇到更贴近你心意的 Databend 。 Support Eager…...
![](/images/no-images.jpg)
亿唐网不做网站做品牌/已备案域名购买平台
由于工作关系 , 经常会用到sql和python的pandas模块,两者有很多相似之处,我将整理出系列的对比文章,并保持更新. 若有不尽之处,敬请指出. 文章目录1. 基础说明2. select 操作3. where操作4. in操作5. regexp正则操作6. group by操作7. order by 操作8. limit 操作9. case when操…...
![](https://img-blog.csdnimg.cn/20210927134551336.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA44K344Kb55Sc6Jm-,size_20,color_FFFFFF,t_70,g_se,x_16)
怎么建立免费的网站/专业网站建设
感谢M_Studio的无私分享,下面是他的主页 M_Studio的个人空间_哔哩哔哩_Bilibili Photon: https://www.photonengine.com/zh-CN/Photon 游戏素材: https://assetstore.unity.com/publishers/44925 一、注册创建应用 创建 导入Photon和游…...