【ETCD】【实操篇(十九)】ETCD基准测试实战
目录
- 1. 设定性能基准要求
- 2. 使用基准测试工具
- 基准测试命令
- 3. 测试不同的负载和场景
- 4. 监控集群性能
- 5. 评估硬件和网络的影响
- 6. 对比性能基准
- 7. 负载均衡和容错能力测试
- 8. 优化与调优
- 9. 测试在高负载下的表现
- 总结

1. 设定性能基准要求
首先,明确集群性能的目标,例如:
- 期望的吞吐量(QPS,查询每秒)和延迟(Latency)。
- 集群能处理的请求数和负载容量。
- 集群对读写操作的响应时间要求。
2. 使用基准测试工具
etcd
提供了基准测试工具,可以用来测试集群在不同负载下的表现。常用的测试项包括:
- 写入性能(QPS和延迟)
- 读取性能(线性化读取与可序列化读取的QPS和延迟)
基准测试命令
使用 etcd 附带的基准测试工具对集群进行测试。根据你设定的目标,测试不同负载下的性能。
例如:
- 测试写入性能:
从主节点写,每秒约7173次。benchmark --endpoints=192.168.188.108:2384 --target-leader --conns=100 --clients=1000 put --key-size=8 --sequential-keys --total=10000 --val-size=256
向所有节点写,每秒13940
1. benchmark
这是执行 etcd 性能基准测试的命令。它是 etcd 自带的一个工具,用于测试 etcd 集群的性能,主要评估集群的吞吐量(QPS)和延迟。2. --endpoints=192.168.188.108:2384
指定了 etcd 集群的端点地址和端口。此参数告诉 benchmark 工具连接到哪个 etcd 实例进行性能测试。192.168.188.108 是 etcd 节点的 IP 地址。
2384 是 etcd 的客户端访问端口。默认情况下,etcd 使用 2379 端口,但在此命令中使用了 2384。
3. --target-leader
此参数指定性能测试将发送到 etcd 集群中的领导节点。Raft 共识算法要求所有的写操作都必须由领导节点进行,因此该参数指定将所有请求发送给当前的领导节点。如果不使用该参数,可能会将请求分发到集群中的任何节点,而不只是领导节点。
4. --conns=100
指定了与 etcd 节点的连接数。在性能测试中,模拟多个客户端连接到 etcd 集群进行操作。这里设置了 100 个并发连接,每个连接都可以进行独立的请求,模拟了高并发的情况。
5. --clients=1000
指定了 benchmark 工具将模拟的客户端数量。每个客户端会向 etcd 集群发送请求。在这里,设置了 1000 个客户端,意味着将有 1000 个并发的客户端向集群发送请求,这通常用于模拟高负载环境。
6. put
表示基准测试的操作类型是 put,即写入操作。该命令会在 etcd 集群中执行写入操作,向集群写入键值对。7. --key-size=8
指定了写入请求中每个键的大小(以字节为单位)。在这个例子中,每个键的大小是 8 字节。8. --sequential-keys
表示键是顺序生成的,而不是随机生成的。使用顺序键可以帮助测试写入操作的性能,因为顺序写入在某些存储系统中比随机写入效率更高。例如,如果写入顺序是递增的,这可能比随机生成的键更加高效。
9. --total=10000
指定了要执行的总操作数。在此命令中,表示要执行 10,000 次 put 操作(即写入 10,000 个键值对)。这个参数影响基准测试的持续时间和压力,操作数越多,测试的负载也越大。
10. --val-size=256
指定了每个写入请求中值的大小(以字节为单位)。在此命令中,值的大小是 256 字节。值的大小会直接影响写入操作的网络负载和磁盘 I/O,较大的值会增加操作的负载。
- 测试读取性能:
测试线性读,每秒约57000次,benchmark --endpoints=192.168.188.108:2384,192.168.188.108:2379,192.168.188.108:2383 --conns=100 --clients=1000 range k --consistency=l --total=10000
测试序列化读,每秒约 74074次。
测试过程中记录并分析:
- 写入 QPS:每秒钟处理多少个写入操作。
- 读取 QPS:每秒钟处理多少个读取操作。
- 延迟:每个请求的平均响应时间(通常是毫秒级)。
官网的基准测试
3. 测试不同的负载和场景
不同的负载类型对性能的影响可能不同。你可以模拟以下几种典型负载:
- 单客户端负载:测试一个客户端对集群的压力。
- 并发客户端负载:测试多个客户端并发访问集群的情况。
- 小批量请求和大批量请求:通过提交较小和较大的请求,评估集群的吞吐量和延迟。
- 读取负载:模拟大量的读取请求,特别是使用线性化和可序列化读取的情况。
4. 监控集群性能
使用监控工具(例如 Prometheus 和 Grafana)实时监控 etcd 集群的性能指标,关键指标包括:
- QPS:每秒查询数,衡量集群的吞吐量。
- 延迟:请求的响应时间,通常关注 99 分位延迟(即大部分请求的延迟)。
- 资源使用率:例如 CPU 使用率、内存使用率、磁盘 IO、网络带宽等。
例如,使用 etcd
的内建监控接口查看实时性能数据:
curl http://<etcd-node>:2379/metrics
5. 评估硬件和网络的影响
性能不仅仅与 etcd 配置相关,还与硬件和网络环境密切相关:
- 硬件配置:确保 etcd 节点的硬件资源足够,特别是 CPU、内存和磁盘性能(尤其是 SSD 性能)。
- 网络延迟:集群节点之间的网络延迟对性能影响很大。使用如
ping
等工具测试节点间的 RTT(往返时间),确保网络延迟较低。
6. 对比性能基准
将你的测试结果与 etcd 官方文档中的基准性能进行对比。通常,etcd 在大多数环境下应能满足以下性能标准:
- 在轻负载情况下,3 节点集群可以在毫秒级别响应请求。
- 在高负载下,集群仍能保持良好的吞吐量和低延迟(如每秒处理数万请求)。
7. 负载均衡和容错能力测试
- 容错测试:模拟节点故障,检查 etcd 在节点失败时的恢复能力和性能。
- 负载均衡:测试集群的负载均衡能力,特别是在多个客户端同时请求时,确保请求能够均匀分布到各个节点。
8. 优化与调优
如果性能不满足要求,可以通过以下方式进行调优:
- 增添节点:增加更多节点来分担负载,改善吞吐量和容错能力。
- 调整配置:例如调整
--max-request-bytes
、--heartbeat-interval
、--election-timeout
等参数来优化性能。 - 硬件优化:更换更高性能的硬件(如更快的 SSD、增加内存、提高网络带宽等)。
9. 测试在高负载下的表现
确保集群能够在高负载下稳定运行。例如,模拟大规模的数据写入(如百万级别的键值对)和高并发请求,观察集群在极限条件下的性能表现。
总结
确认新创建的 etcd 集群性能是否满足要求的关键步骤包括:
- 设定明确的性能目标。
- 使用基准测试工具进行性能测试。
- 监控集群的实时性能数据。
- 测试不同负载和场景下的性能。
- 评估硬件和网络环境的影响。
- 根据测试结果进行调整和优化。
通过这些步骤,你可以确保 etcd 集群在实际生产环境中能够满足高可用、高吞吐量和低延迟的需求。
相关文章:
【ETCD】【实操篇(十九)】ETCD基准测试实战
目录 1. 设定性能基准要求2. 使用基准测试工具基准测试命令 3. 测试不同的负载和场景4. 监控集群性能5. 评估硬件和网络的影响6. 对比性能基准7. 负载均衡和容错能力测试8. 优化与调优9. 测试在高负载下的表现总结 1. 设定性能基准要求 首先,明确集群性能的目标&am…...
HTML——29. 音频引入二
<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>音频引入</title></head><body><!--audio:在网页中引入音频IE8以及之前版本不支持属性名和属性值一样,可以只写属性名src属性:指定音频文件…...
【SQLi_Labs】Basic Challenges
什么是人生?人生就是永不休止的奋斗! Less-1 尝试添加’注入,发现报错 这里我们就可以直接发现报错的地方,直接将后面注释,然后使用 1’ order by 3%23 //得到列数为3 //这里用-1是为了查询一个不存在的id,好让第一…...
InnoDB存储引擎对MVCC的实现
多版本并发控制 (Multi-Version Concurrency Control) MVCC(Multi-Version Concurrency Control),即多版本并发控制,是一种并发控制方法,主要用于数据库管理系统中实现对数据库的并发访问。以下是MVCC的详细解释&#…...
3D线上艺术展:艺术与技术的完美融合
随着数字技术的飞速发展,未来的艺术展览正逐步迈向线上线下融合的新阶段。其中,3D线上展览以其独特的魅力,成为线下展览的延伸与拓展,为艺术爱好者们开辟了全新的观赏途径。 对于艺术家和策展人而言,3D线上展览不仅打…...
EasyExcel(读取操作和填充操作)
文章目录 1.准备Read.xlsx(具有两个sheet)2.读取第一个sheet中的数据1.模板2.方法3.结果 3.读取所有sheet中的数据1.模板2.方法3.结果 EasyExcel填充1.简单填充1.准备 Fill01.xlsx2.无模版3.方法4.结果 2.列表填充1.准备 Fill02.xlsx2.模板3.方法4.结果 …...
【CSS in Depth 2 精译_095】16.3:深入理解 CSS 动画(animation)的性能
当前内容所在位置(可进入专栏查看其他译好的章节内容) 第五部分 添加动效 ✔️【第 16 章 变换】 ✔️ 16.1 旋转、平移、缩放与倾斜 16.1.1 变换原点的更改16.1.2 多重变换的设置16.1.3 单个变换属性的设置 16.2 变换在动效中的应用 16.2.1 放大图标&am…...
目前最流行的 Rust Web 框架有哪些?
目前最流行的 Rust Web 框架有哪些? 1. Actix Web:高性能之王,老牌框架 特点: 高性能:基于 Actor 模型,是目前 Rust 生态中最成熟、性能最强的 Web 框架之一。功能强大:支持 HTTP/1.x、HTTP/2、WebSocket 等,内置中间件和多种插件。社区支持广泛:拥有大量使用者,资料…...
连锁餐饮行业数据可视化分析方案
引言 随着连锁餐饮行业的迅速发展,市场竞争日益激烈。企业需要更加精准地把握运营状况、消费者需求和市场趋势,以制定科学合理的决策,提升竞争力和盈利能力。可视化数据分析可以帮助连锁餐饮企业整合多源数据,通过直观、动态的可…...
如何通过采购管理系统提升供应链协同效率?
供应链是企业运营的命脉,任何环节的延迟或失误都会对企业造成严重影响。在采购环节中,如何保证与供应商的协同效率,避免因信息不对称而导致的决策失误,是企业面临的一大挑战。采购管理系统作为数字化供应链管理的重要工具…...
1、Jmeter、jdk下载与安装
1、访问官网,点击下载Jmeter http://jmeter.apache.org/ 2、在等待期间,下载对应的Java https://www.oracle.com/cn/java/technologies/downloads/#jdk23-windows 3、全部下载好,先安装JDK : ListBuffer[BookModel] {val books new ListBuffer[BookModel](…...
Java 类加载机制
什么是类 类是现实世界的实体在计算中的映射、它将数据以及对这些数据的操作封装在一起。 类加载的定义 类加载是 JVM 运行时的一个动作、支持将 class 动态加载到 JVM 中 类加载是一种懒加载模式、按需加载。 类加载到五个过程 加载验证准备解释初始化 提一点࿰…...
Lombok是银弹?还是陷阱?
Lombok 是一个 Java 库,它通过注解简化和减少了 Java 中的样板代码(boilerplate code),例如 getter/setter 方法、构造函数、equals 和 hashCode 方法等。 对于是否将 Lombok 视为“银弹”或“陷阱”,这实际上取决于你…...
大数据技术-Hadoop(四)Yarn的介绍与使用
目录 一、Yarn 基本结构 1、Yarn基本结构 2、Yarn的工作机制 二、Yarn常用的命令 三、调度器 1、Capacity Scheduler(容量调度器) 1.1、特点 1.2、配置 1.2.1、yarn-site.xml 1.2.2、capacity-scheduler.xml 1.3、重启yarn、刷新队列 测试 向hi…...
CentOS修改docker镜像存储位置并进行数据迁移
在 CentOS 上修改 Docker 镜像存储位置并进行数据迁移是一个常见的需求。以下是一个详细的步骤指南,帮助你完成这个任务。 1. 停止 Docker 服务 首先,确保 Docker 服务已经停止,以避免在迁移过程中出现数据损坏。 sudo systemctl stop doc…...
xterm + vue3 + websocket 终端界面
xterm.js 下载插件 // xterm npm install --save xterm// xterm-addon-fit 使终端适应包含元素 npm install --save xterm-addon-fit// xterm-addon-attach 通过websocket附加到运行中的服务器进程 npm install --save xterm-addon-attach <template><div :…...
解锁 CSS:网页美化与布局的艺术
目录 一、CSS 是什么 二、CSS 的作用 三、CSS 的应用方式(引用方式) 四、选择器:如何挑选要 “打扮” 的元素 五、CSS 属性:丰富多样的 “服装款式” 字体属性: 文本属性:只能控制文字的相关样式。 …...
AWS K8s 部署架构
Amazon Web Services(AWS)提供了一种简化的Kubernetes(K8s)部署架构,使得在云环境中管理和扩展容器化应用变得更加容易。这个架构的核心是AWS EKS(Elastic Kubernetes Service),它是…...
【鸿蒙NEXT】鸿蒙里面类似iOS的Keychain——关键资产(@ohos.security.asset)实现设备唯一标识
前言 在iOS开发中Keychain 是一个非常安全的存储系统,用于保存敏感信息,如密码、证书、密钥等。与 NSUserDefaults 或文件系统不同,Keychain 提供了更高的安全性,因为它对数据进行了加密,并且只有经过授权的应用程序才…...
电子电器架构 --- HUD的工作原理
我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 所谓鸡汤,要么蛊惑你认命,要么怂恿你拼命,但都是回避问题的根源,以现象替代逻辑,以情绪代替思考,把消极接受现实的懦弱,伪装成乐观面对不幸的…...
C# 窗体应用程序嵌套web网页,基于谷歌浏览器内核(含源码)
有一个winform项目,需要借助一个web项目来显示,并且对web做一些操作,web页目是需要用谷歌内核,基于谷歌 Chromium项目的开源Web Browser控件来开发写了一个demo。 安装步骤 第一步:右键项目,点击 管理NuGet程序包 , 输…...
FFmpeg 中 examples 使用教程
FFmpeg 中 examples FFmpeg 的 examples 目录包含了一系列示例程序,旨在展示如何使用 FFmpeg 的不同库和 API。这些示例涵盖了多种功能,包括音视频编解码、格式转换、过滤、网络传输等。以下是一些常见的示例程序及其功能介绍: 音频和视频解码: 示例程序展示了如何打开音视…...
自动化办公-合并多个excel
在日常的办公自动化工作中,尤其是处理大量数据时,合并多个 Excel 表格是一个常见且繁琐的任务。幸运的是,借助 Python 语言中的强大库,我们可以轻松地自动化这个过程。本文将带你了解如何使用 Python 来合并多个 Excel 表格&#…...
Docker搭建MySQL
Docker搭建MySQL 准备工作 先准备配置目录和持久化目录,举个栗子:mkdir -p /opt/module/mysql/{conf,data,log}准备配置文件*.cnf,放到/opt/module/mysql/conf目录下。当然不准备也没事,容器中有个默认配置:/etc/mysql/conf.d/m…...
亚马逊国际站商品爬虫:Python实战指南
在数字化时代,数据的价值不言而喻。对于电商领域而言,获取竞争对手的商品信息、价格、评价等数据,对于市场分析和策略制定至关重要。本文将带你了解如何使用Python编写爬虫,以亚马逊国际站为例,按照关键字搜索并获取商…...
pwntools用法
pwntools 是一个Python库, 用于编写二进制漏洞利用(exploitation)脚本 功能: 远程连接和本地连接: 支持通过TCP/UDP连接远程服务或与本地进程进行交互。Shellcode和ROP链构造: 提供了便捷的工具来生成和利…...
企业云盘怎么选?2024年免费版9款整理
文章介绍了以下9大企业云盘:1.亿方云;2.Worktile;3.百度网盘;4.腾讯云盘;5.阿里云盘;6.金山云盘;7.Dropbox;8.Box。 在企业日常管理中,文件存储和共享一直是个不小的难题…...
Linux之ARM(MX6U)裸机篇----5.仿stm32的LED驱动实验
一,启动文件 .global _start .global _bss_start /* 类似宏定义把__bss_start定义为_bss_start */ _bss_start:.word __bss_start.global _bss_end _bss_end:.word __bss_end_start:#设置处理器进入SVC模式mrs r0, cpsr /* 读取cpsr到r0 */bic r0, r0, …...
Qt从入门到入土(七)-实现炫酷的登录注册界面(下)
前言 Qt从入门到入土(六)-实现炫酷的登录注册界面(上)主要讲了如何使用QSS样式表进行登录注册的界面设计,本篇文章将介绍如何对登录注册界面进行整体控件的布局,界面的切换以及实现登录、记住密码等功能。…...
如何进行年度工作回顾?
发生了什么事? 什么事情进展顺利 ? 什么事情进展不顺利? 如何适应未来? 年度回顾的定义:这是一种战略工具,能帮助人们清晰看到过去一年对业务、职业或个人生活的影响,可用于明确关键事件、找出问…...
spring默认线程池SimpleAsyncTaskExecutor特点为什么要尽量避免使用
在 Spring Boot 中,默认的线程池配置由 TaskExecutionAutoConfiguration 类提供,使用的是 SimpleAsyncTaskExecutor。 SimpleAsyncTaskExecutor特点 每次调用创建新线程: SimpleAsyncTaskExecutor 每次执行任务时都会创建一个新线程…...
每天40分玩转Django:Django表单集
Django表单集 一、知识要点概览表 类别知识点掌握程度要求基础概念FormSet、ModelFormSet深入理解内联表单集InlineFormSet、BaseInlineFormSet熟练应用表单集验证clean方法、验证规则熟练应用自定义配置extra、max_num、can_delete理解应用动态管理JavaScript动态添加/删除表…...
构建混合技术栈的统一监控与日志平台
文章目录 摘要引言构建统一监控与日志平台的核心思路痛点分析解决方案 平台架构设计架构概览 环境准备Java 服务的 Prometheus 指标导出Prometheus 指标采集模块Node.js 日志收集模块3. Logstash 配置4. Grafana 与 Kibana 配置 QA 环节总结未来展望参考资料 摘要 在多技术栈开…...
KOI技术-事件驱动编程(Sping后端)
1 “你日渐平庸,甘于平庸,将继续平庸。”——《以自己喜欢的方式过一生》 2. “总是有人要赢的,那为什么不能是我呢?”——科比布莱恩特 3. “你那么憎恨那些人,和他们斗了那么久,最终却要变得和他们一样,…...
ubuntu 20.04 国内源安装docker
先更新软件包,安装备要apt软件 # 更新软件包索引 sudo apt-get update# 安装需要的软件包以使apt能够通过HTTPS使用仓库 sudo apt-get install ca-certificates curl gnupg lsb-release使用阿里云源 # 添加阿里云官方GPG密钥 curl -fsSL http://mirrors.aliyun.co…...
微信小程序 app.json 配置文件解析与应用
目录 一、什么是 app.json? 二、app.json 文件的基本结构 三、详细解析 app.json 配置项 1. pages:小程序页面路径配置 2. window:窗口样式配置 3. tabBar:底部标签栏配置 4. networkTimeout:网络请求超时配置 …...
C高级:思维导图Day2
目录 总览1 总览2 总览1 压缩与解压缩 打包与解包 软连接与硬链接 ubuntu下关机与重启指令 总览2 结束...
蓝桥杯(Java)(ing)
Java前置知识 输入流: (在Java面向对象编程-CSDN博客里面有提过相关知识------IO流) // 快读快写 static BufferedReader in new BufferedReader(new InputStreamReader(System.in)); static BufferedWriter out new BufferedWriter(new…...
[Pro Git#2] 分支管理 | branch fix_bug , feature | 处理合并冲突
目录 一、Issue模板文件 二、Pull Requests模板文件 分支管理 1. 理解分支 2. 创建与管理分支 1. 切换分支与提交历史 2. 合并分支 3. 删除分支 4. 解决合并冲突 6. 查看分支合并情况 快速创建并切换分支 分支管理策略 分支合并模式 分支管理原则 日常开发环境 …...
Java——集合框架
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 1 集合框架概述1.1 内存层面需要针对多个数据进行存储。此时,可以考虑的容器有:1.2 数组存储多个数据方面的特点和弊端1.3 Java集合框架体系…...
Mac 环境 VVenC 编译与编码命令行工具使用教程
VVenC VVenC 是一个开源的高效视频编码器,专门用于支持 H.266/VVC (Versatile Video Coding) 标准的编码。H.266/VVC 是继 HEVC (H.265) 之后的新一代视频编码标准,主要目的是提供比 HEVC 更高的压缩效率,同时保持或提高视频质量。H.266/VVC…...
WebRTC:实现浏览器与移动应用的实时通信
1.技术简介 (Web Real-Time)是一种开放式实时通信技术,旨在使浏览器和移动应用程序通过简单的API即可实现实时音频、视频和数据传输,而无需安装插件或额外软件。它支持网络应用中的点对点通信,例如视频聊天、语音通话…...
curl+openssl 踩坑笔记
curl编译:点击跳转 踩坑一 * SSL certificate problem: unable to get local issuer certificate * closing connection #0 curl: (60) SSL certificate problem: unable to get local issuer certificate More details here: https://curl.se/docs/sslcerts.html …...
【NebulaGraph】变化的多跳查询
【NebulaGraph】变化的多跳查询 1. 需求2. 解决方案2.1 确定查询结构2.2 构建查询语句 3. 追加需求:如果增加每一跳都要指定查询某SPACE下的Tag,或者不查询某个Tag怎么办 1. 需求 存在多跳请求,其中每一跳是从上一跳查询结果为基础的。但是 …...
【C++】九九乘法表编程题详解与多角度对比分析
博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 💯前言💯题目概述题目描述 💯老师的实现方法代码解析优点不足 💯我的实现方法代码解析优点不足 💯实现方法对比💯优化与扩展代码优化…...
node.js卸载并重新安装(超详细图文步骤)
卸载node.js 重新安装nodejs 一、卸载 1、首先进入控制面板卸载程序 2、卸载后 到文件夹中进行进一步的删除 删除上述的几个文件夹 每个人可能不一样,总之是找到自己的nodejs安装路径,下面是我的 ①删除C:UsersAdminAppDataRoaming路径下的npm相关文件…...
redis的集群模式与ELK基础
一、redis的集群模式 1.主从复制 (1)概述 主从模式:这是redis高可用的基础,哨兵和集群都是建立在此基础之上。 主从模式和数据库的主从模式是一样的,主负责写入,然后把写入的数据同步到从服务器ÿ…...
一份关于 Ubuntu 系统下代理配置的故障排查笔记
Ubuntu 网络代理配置与故障排查指南 在使用 Ubuntu 系统时,配置网络代理可以帮助提升网络访问速度或突破网络限制。然而,代理配置过程中可能会遇到各种问题。本文将详细介绍如何在 Ubuntu 下配置网络代理,并提供故障排查的步骤和解决方案。 …...
如何用jmeter工具进行性能测试
前言 今天我们来说说jmeter如何进行性能测试,我们都知道jmeter工具除了可以进行接口功能测试外,还可以进行性能测试。当项目趋于稳定,根据性能需求就可以着手准备性能测试了,今天就说一说jmeter如何进行性能测试,jmet…...