Elasticsearch VS Easysearch 性能测试

压测环境

虚拟机配置

使用阿里云上规格:ecs.u1-c1m4.4xlarge,PL2: 单盘 IOPS 性能上限 10 万 (适用的云盘容量范围:461GiB - 64TiB)

vCPU内存 (GiB)磁盘(GB)带宽(Gbit/s)数量
1664500500024

Easysearch 配置

7 节点集群,版本:1.9.0

实例名内网 IP软件vCPUJVM磁盘
i-2zegn56cijnzklcn2410172.22.75.144Easysearch1631G500GB
i-2zegn56cijnzklcn240u172.23.15.97Easysearch1631G500GB
i-2zegn56cijnzklcn240i172.25.230.228Easysearch1631G500GB
i-2zegn56cijnzklcn240y172.22.75.142Easysearch1631G500GB
i-2zegn56cijnzklcn240x172.22.75.143Easysearch1631G500GB
i-2zegn56cijnzklcn240z172.24.250.252Easysearch1631G500GB
i-2zegn56cijnzklcn240r172.24.250.254Easysearch1631G500GB

Elasticsearch 配置

7 节点集群,版本:7.10.2

实例名称内网 IP软件vCPUJVM磁盘
i-2zegn56cijnzklcn240m172.24.250.251Elasticsearch1631G500GB
i-2zegn56cijnzklcn240p172.22.75.145Elasticsearch1631G500GB
i-2zegn56cijnzklcn240o172.17.67.246Elasticsearch1631G500GB
i-2zegn56cijnzklcn240t172.22.75.139Elasticsearch1631G500GB
i-2zegn56cijnzklcn240q172.22.75.140Elasticsearch1631G500GB
i-2zegn56cijnzklcn240v172.24.250.253Elasticsearch1631G500GB
i-2zegn56cijnzklcn240l172.24.250.250Elasticsearch1631G500GB

监控集群配置

单节点 Easysearch 集群,版本:1.9.0

实例名内网 IP软件vCPU内存磁盘
i-2zegn56cijnzklcn240f172.25.230.226监控集群:Console1664G500GB
i-2zegn56cijnzklcn240j172.23.15.98监控集群:Easysearch1664G500GB

压测 loadgen 配置

loadgen 版本:1.25.0

4 台压 Easysearch,4 台压 Elasticsearch。

实例名内网 IP软件vCPU内存磁盘
i-2zegn56cijnzklcn240n172.17.67.245Loadgen - 压 Easysearch1664G500GB
i-2zegn56cijnzklcn2411172.22.75.141Loadgen - 压 Easysearch1664G500GB
i-2zegn56cijnzklcn240k172.25.230.227Loadgen - 压 Easysearch1664G500GB
i-2zegn56cijnzklcn240e172.22.75.138Loadgen - 压 Easysearch1664G500GB
i-2zegn56cijnzklcn240h172.24.250.255Loadgen - 压 Elasticsearch1664G500GB
i-2zegn56cijnzklcn240w172.24.251.0Loadgen - 压 Elasticsearch1664G500GB
i-2zegn56cijnzklcn240g172.24.250.248Loadgen - 压 Elasticsearch1664G500GB
i-2zegn56cijnzklcn240s172.24.250.249Loadgen - 压 Elasticsearch1664G500GB

压测索引 Mapping

PUT nginx
{"mappings": {"properties": {"method": {"type": "keyword"},"bandwidth": {"type": "integer"},"service_name": {"type": "keyword"},"ip": {"type": "ip"},"memory_usage": {"type": "integer"},"upstream_time": {"type": "float"},"url": {"type": "keyword"},"response_size": {"type": "integer"},"request_time": {"type": "float"},"request_body_size": {"type": "integer"},"error_code": {"type": "keyword"},"metrics": {"properties": {"queue_size": {"type": "integer"},"memory_usage": {"type": "integer"},"thread_count": {"type": "integer"},"cpu_usage": {"type": "integer"},"active_connections": {"type": "integer"}}},"cpu_usage": {"type": "integer"},"user_agent": {"type": "keyword"},"connections": {"type": "integer"},"timestamp": {"type": "date","format": "yyyy-MM-dd'T'HH:mm:ss.SSS"},"status": {"type": "integer"}}},"settings": {"number_of_shards": 7,"number_of_replicas": 0,"refresh_interval": "30s"}
}

压测方法

每 4 个 loadgen 使用批量写入接口 bulk 轮询压测同一集群的 7 个节点,每个请求写入 10000 个文档。

具体请求如下:

requests:- request: #prepare some docsmethod: POSTruntime_variables:
#        batch_no: uuidruntime_body_line_variables:
#        routing_no: uuid
#      url: $[[env.ES_ENDPOINT]]/_bulkurl: $[[ip]]/_bulkbody_repeat_times: 10000basic_auth:username: "$[[env.ES_USERNAME]]"password: "$[[env.ES_PASSWORD]]"body: |{"index": {"_index": "nginx", "_type": "_doc", "_id": "$[[uuid]]"}}$[[message]]

压测数据样本

{"method":"DELETE","bandwidth":1955,"service_name":"cart-service","ip":"120.204.26.240","memory_usage":1463,"upstream_time":"1.418","url":"/health","response_size":421,"request_time":"0.503","request_body_size":1737,"error_code":"SYSTEM_ERROR","metrics":{"queue_size":769,"memory_usage":1183,"thread_count":65,"cpu_usage":68,"active_connections":837},"cpu_usage":70,"user_agent":"Mozilla/5.0 (iPad; CPU OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.1","connections":54,"timestamp":"2024-11-16T14:25:21.423","status":500}
{"method":"OPTIONS","bandwidth":10761,"service_name":"product-service","ip":"223.99.83.60","memory_usage":567,"upstream_time":"0.907","url":"/static/js/app.js","response_size":679,"request_time":"1.287","request_body_size":1233,"error_code":"NOT_FOUND","metrics":{"queue_size":565,"memory_usage":1440,"thread_count":148,"cpu_usage":39,"active_connections":1591},"cpu_usage":87,"user_agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.1","connections":354,"timestamp":"2024-11-16T05:37:28.423","status":502}
{"method":"HEAD","bandwidth":10257,"service_name":"recommendation-service","ip":"183.60.242.143","memory_usage":1244,"upstream_time":"0.194","url":"/api/v1/recommendations","response_size":427,"request_time":"1.449","request_body_size":1536,"error_code":"UNAUTHORIZED","metrics":{"queue_size":848,"memory_usage":866,"thread_count":86,"cpu_usage":29,"active_connections":3846},"cpu_usage":71,"user_agent":"Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)","connections":500,"timestamp":"2024-11-16T15:14:30.424","status":403}

压测索引 1 主分片 0 副本

Elastic 吞吐

Elastic 线程及队列

资源消耗

Easysearch 吞吐

Easysearch 线程及队列

资源消耗

对比

软件平均集群吞吐平均单节点吞吐最大队列磁盘消耗
Elasticsearch5w5w81110G
Easysearch7w7w4274G

压测索引 1 主分片 1 副本

Elastic 吞吐

Elastic 线程及队列

资源消耗

Easysearch 吞吐

Easysearch 线程及队列

资源消耗

对比

软件平均集群吞吐平均单节点吞吐最大队列磁盘消耗(~3000 万文档)
Elasticsearch10w5w79122G
Easysearch14w7w4217G

压测索引 7 主分片

Elastic 吞吐

Elastic 线程及队列

资源消耗

网络

单节点平均接收 26MB/s,对应带宽:1456 Mb/s

5 千万文档,总存储 105 GB,单节点 15 GB

Easysearch 吞吐

Easysearch 线程及队列

资源消耗

对比

软件平均集群吞吐平均单节点吞吐最大队列磁盘消耗
Elasticsearch35w5w2449105G
Easysearch60w8.5w117236G

总结

通过对不同场景的压测结果进行对比分析,得出以下结论:

  • Easysearch 相比 Elasticsearch 的索引性能显著提升
    Easysearch 集群的吞吐性能提升了 40% - 70%,且随着分片数量的增加,性能提升效果更为显著。
  • Easysearch 相比 Elasticsearch 的磁盘压缩效率大幅提高
    Easysearch 集群的磁盘压缩效率提升了 2.5 - 3 倍,并且随着数据量的增加,压缩效果愈发明显。

此测试结果表明,Easysearch 在日志处理场景中具有更高的性能与存储效率优势,尤其适用于大规模分片与海量数据的使用场景。

如有任何问题,请随时联系我,期待与您交流!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/65961.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Echarts+vue电商平台数据可视化——webSocket改造项目

websocket的基本使用,用于测试前端能否正常获取到后台数据 后台代码编写: const path require("path"); const fileUtils require("../utils/file_utils"); const WebSocket require("ws"); // 创建WebSocket服务端的…

jenkins修改端口以及开机自启

修改Jenkins端口 方式一:通过配置文件修改(以CentOS为例) 找到配置文件:在CentOS系统中,通常可以在/etc/sysconfig/jenkins文件中修改Jenkins的配置。如果没有这个文件,也可以查看/etc/default/jenkins&…

《Vue3实战教程》34:Vue3状态管理

如果您有疑问&#xff0c;请观看视频教程《Vue3实战教程》 状态管理​ 什么是状态管理&#xff1f;​ 理论上来说&#xff0c;每一个 Vue 组件实例都已经在“管理”它自己的响应式状态了。我们以一个简单的计数器组件为例&#xff1a; vue <script setup> import { r…

jQuery Mobile 可折叠块

jQuery Mobile 可折叠块 1. 引言 在构建移动端网站时&#xff0c;有效地使用屏幕空间是至关重要的。jQuery Mobile 是一个流行的框架&#xff0c;它通过提供丰富的UI组件来帮助开发者创建响应式的移动应用。在这些组件中&#xff0c;可折叠块&#xff08;Collapsible Blocks&…

简单使用linux

1.1 Linux的组成 Linux 内核&#xff1a;内核是系统的核心&#xff0c;是运行程序和管理 像磁盘和打印机等硬件设备的核心程序。 文件系统 : 文件存放在磁盘等存储设备上的组织方法。 Linux 能支持多种目前浒的文件系统&#xff0c;如 ext4 、 FAT 、 VFAT 、 ISO9660 、 NF…

微服务のGeteWay

目录 概念&#xff1a; 三大核心&#xff1a; 工作流程&#xff1a; 9527网关如何做路由映射&#xff1a; GetWay高级特性&#xff1a; 按服务名动态路由服务&#xff1a; 断言Route Predicate Factories &#xff1a; 获取当前时区时间&#xff1a; After Route &…

Python世界:函数模块知识点小结

Python世界&#xff1a;函数模块知识点小结 Python函数模块 部分笔记汇总&#xff0c;持续刷新中。区别于其他笔记之处在于&#xff0c;主要记录易错点坑点。 Python函数模块 函数是编码过程中最小的功能模块。 什么是函数式编程&#xff1f; 函数式编程&#xff0c;本质是通…

机器学习随机森林回归时间序列预模型中时间滑动窗口作用以及参数设置

一、时间序列模型中时间滑动窗口作用 在时间序列模型中&#xff0c;时间滑动窗口&#xff08;Sliding Window&#xff09;起到了至关重要的作用。它是一种常见且有效的数据表示技术&#xff0c;通过将时间序列数据分割成多个固定大小的窗口&#xff0c;来捕捉和分析数据中的模式…

idea 的 springboot项目spring-boot-devtools 自动编译 配置热部署

1&#xff0c;设置一 2&#xff0c;设置二 设置二&#xff08;旧版本&#xff09; CtrlShiftAlt/ 点击弹出框中Registry... 引入&#xff08;如果报错&#xff0c;换不同的版本&#xff09; <dependency><groupId>org.springframework.boot</groupId><a…

GitHub CLI 安装指南

GitHub CLI 是 GitHub 官方提供的命令行工具&#xff0c;可以帮助开发者方便地与 GitHub 平台进行交互&#xff0c;例如克隆仓库、提交代码、创建 Pull Request 等。 相比传统的 HTTPS 下载和操作&#xff0c;GitHub CLI 提供了以下显著的优势和特殊功能&#xff1a; GitHub …

建立一个Macos载入image的实例含界面

前言 为了方便ios程序的开发&#xff0c;有时候需要先用的Macos平台进行一些功能性的程序开发。 作为对比和参考。 1、创建一个MacOS的App 2、主界面控件的增加 添加的控件方法与ios相同&#xff0c;也是再用commandshiftL&#xff08;CtrlShiftL&#xff09;,就会弹出控件…

Megatron - LM 怎么进行模型切分的,怎么匹配服务器的

Megatron - LM 怎么进行模型切分的,怎么匹配服务器的? Megatron - LM主要针对Transformer模型进行层内模型并行训练,其模型切分和服务器匹配策略如下: 模型切分 多头注意力模块切分:在Transformer的多头注意力模块中,Megatron - LM利用其内在并行性,将与矩阵乘运算相关…

在CodeBlocks搭建SDL2工程构建TFT彩屏模拟器虚拟TFT彩屏幕显示

在CodeBlocks搭建SDL2工程构建TFT彩屏模拟器虚拟TFT彩屏幕显示 参考文章源码下载地址一、SDL2的创建、初始化、退出二、系统基本Tick、彩屏刷新、按键事件三、彩屏获取与设置颜色四、彩屏填充颜色及清屏五、彩屏显示中文和英文字符串六、彩屏显示数字七、彩屏初始化八、主函数测…

基于Springboot + vue实现的校园周边美食探索及分享平台

&#x1f942;(❁◡❁)您的点赞&#x1f44d;➕评论&#x1f4dd;➕收藏⭐是作者创作的最大动力&#x1f91e; &#x1f496;&#x1f4d5;&#x1f389;&#x1f525; 支持我&#xff1a;点赞&#x1f44d;收藏⭐️留言&#x1f4dd;欢迎留言讨论 &#x1f525;&#x1f525;&…

LeetCode - 初级算法 数组(删除排序数组中的重复项)

免责声明:本文来源于个人知识与公开资料,仅用于学术交流。 删除排序数组中的重复项 这篇文章讨论如何从一个非严格递增的数组 nums 中删除重复的元素,使每个元素只出现一次,并返回新数组的长度。因为数组是排序的,只要是相同的肯定是挨着的,所以我们需要遍历所有数组,然…

MySQL深度解析:优化策略与实战案例

MySQL深度解析:优化策略与实战案例 在当今数据驱动的时代,数据库作为数据存储与管理的核心组件,其性能的优化直接关系到业务系统的响应速度、稳定性和可扩展性。MySQL,作为一款开源的关系型数据库管理系统,凭借其高性能、高可靠性和易用性,在Web应用、数据分析等领域得到…

MVCC实现原理以及解决脏读、不可重复读、幻读问题

MVCC实现原理以及解决脏读、不可重复读、幻读问题 MVCC是什么&#xff1f;有什么作用&#xff1f;MVCC的实现原理行隐藏的字段undo log日志版本链Read View MVCC在RC下避免脏读MVCC在RC造成不可重复读、丢失修改MVCC在RR下解决不可重复读问题RR下仍然存在幻读的问题 MVCC是什么…

【leetcode100】二叉树的中序遍历

1、题目描述 给定一个二叉树的根节点 root &#xff0c;返回 它的 中序 遍历 。 示例 1&#xff1a; 输入&#xff1a;root [1,null,2,3] 输出&#xff1a;[1,3,2] 2、初始思路 2.1 思路 中序遍历的顺序是左→根→右&#xff0c;定义一个函数进行遍历 # Definition for …

租用服务器还是服务器托管:哪种方案更适合您?

随着企业对网络服务质量要求的不断提高&#xff0c;租用服务器和服务器托管是两种常见的选择&#xff0c;各自具备独特的优势和适用场景。这篇文章将从多个维度对这两种方案进行详细分析&#xff0c;帮助大家进行对比选择。 租用服务器的优劣势分析 优点 无需大额初始投入 租用…

Quartus In-System Sources and Probes Editor 的使用说明

文章目录 前言使用说明参考资料 前言 Quartus 提供了 In-System Sources and Probes Editor 调试工具&#xff0c;通过 JTAG 接口使用该工具可以驱动和采样内部节点的逻辑值。即通过 Sources 功能来驱动 FPGA 内部信号&#xff0c;通过 Probes 功能来探测内部节点的逻辑值。在…