loadgen
Easysearch 性能测试方法概要
Easysearch • INFINI Labs 小助手 发表了文章 • 0 个评论 • 2697 次浏览 • 2024-08-23 14:47
INFINI Easysearch
INFINI Easysearch 是一个分布式的近实时搜索与分析引擎,核心引擎基于开源的 Apache Lucene。Easysearch 衍生自基于开源协议 Apache 2.0 的 Elasticsearch 7.10 版本,完善和支持更多的企业级功能,优化搜索业务场景,以保证更佳的数据探索与分析体验。
Easysearch 的主要特点:
- 兼容 Elasticsearch,业务代码无需改动;可平滑迁移
- 企业级安全;更稳定可靠
- 企业级管理后台(多集群统一管理,实现运营标准化、自动化)
- 信创适配(全面适配国产 CPU/OS/服务器,支持国密算法)
Easysearch 快速体验,请参阅:
Loadgen
Loadgen 是 Elasticsearch 专属压测工具,用来对 Easysearch 或者网关进行压力测试。
Loadgen 的特点:
- 性能强劲
- 轻量级无依赖
- 支持模板化参数随机
- 支持高并发
- 支持压测端均衡流量控制
- 支持服务端返回值校验
当前最新版本为 1.26.1-598,下载链接如下:
https://release.infinilabs.com/loadgen/stable/
下载并解压安装包后,得到二进制文件。
查看版本信息。
$ ./loadgen-linux-amd64 -v
__ ___ _ ___ ___ __ __
/ / /___\/_\ / \/ _ \ /__\/\ \ \
/ / // ///_\\ / /\ / /_\//_\ / \/ /
/ /__/ \_// _ \/ /_// /_\\//__/ /\ /
\____|___/\_/ \_/___,'\____/\__/\_\ \/
[LOADGEN] A http load generator and testing suite.
[LOADGEN] 1.26.1#598, 2024-08-14 04:50:03, 2024-12-31 10:10:10, 00f15fd86834d7ea539f6d66ee608e3915eef0e3
loadgen 1.26.1 598 2024-08-14 04:50:03 +0000 UTC 2024-12-31 10:10:10 +0000 UTC 00f15fd86834d7ea539f6d66ee608e3915eef0e3
Loadgen 测试
Loadgen 使用非常简单,下面演示如何进行查询压测。
- 建立索引,根据节点数调节分片数。
curl -X PUT -H "Content-Type: application/json" \
-ku admin:xxx "https://localhost:9200/loadtest" -d'
{
"settings":{
"number_of_shards":"3",
"number_of_replicas":1,
"translog":{
"durability":"async"
}
}
}'
{"acknowledged":true,"shards_acknowledged":true,"index":"loadtest"}
- 创建
loadgen.dsl.shawnyan
配置文件,定义查询
GET loadtest/_search
{"query": {"term": {"id.keyword": {"value": $[[id]]}}}}
- 执行压测,
-d
表示秒数,-c
表示并发数。
$ ES_ENDPOINT=https://localhost:9200 ES_USERNAME=admin ES_PASSWORD=xxx ./loadgen-linux-amd64 -run loadgen.dsl.shawnyan -d 10 -c 2
__ ___ _ ___ ___ __ __
/ / /___\/_\ / \/ _ \ /__\/\ \ \
/ / // ///_\\ / /\ / /_\//_\ / \/ /
/ /__/ \_// _ \/ /_// /_\\//__/ /\ /
\____|___/\_/ \_/___,'\____/\__/\_\ \/
[LOADGEN] A http load generator and testing suite.
[LOADGEN] 1.26.1#598, 2024-08-14 04:50:03, 2024-12-31 10:10:10, 00f15fd86834d7ea539f6d66ee608e3915eef0e3
[08-19 16:43:27] [INF] [env.go:179] configuration auto reload enabled
[08-19 16:43:27] [INF] [app.go:285] initializing loadgen, pid: 30792
[08-19 16:43:27] [INF] [app.go:286] using config: /data/es/loadgen.yml
[08-19 16:43:27] [INF] [module.go:155] started plugin: statsd
[08-19 16:43:27] [INF] [module.go:161] all modules are started
[08-19 16:43:27] [INF] [instance.go:78] workspace: /data/es/data/loadgen/nodes/cr1gabqr90cng685o2s0
[08-19 16:43:27] [INF] [app.go:511] loadgen is up and running now.
[08-19 16:43:27] [INF] [main.go:403] loading config: /data/es/loadgen.dsl.shawnyan
21108 requests finished in 9.79061677s, 1.08MB sent, 3.22MB received
[Loadgen Client Metrics]
Requests/sec: 2110.63
Request Traffic/sec: 110.22KB
Total Transfer/sec: 440.00KB
Fastest Request: 680.198µs
Slowest Request: 12.409574ms
Status 200: 21108
[Latency Metrics]
10000 samples of 21108 events
Cumulative: 8.732205871s
HMean: 851.869µs
Avg.: 873.22µs
p50: 839.498µs
p75: 914.298µs
p95: 1.059197ms
p99: 1.327098ms
p999: 4.83579ms
Long 5%: 1.394411ms
Short 5%: 724.226µs
Max: 11.618475ms
Min: 680.198µs
Range: 10.938277ms
StdDev: 289.216µs
Rate/sec.: 2110.63
[Latency Distribution]
680µs - 1.774ms ------------------------------
1.774ms - 2.867ms -
2.867ms - 3.961ms -
3.961ms - 5.055ms -
5.055ms - 6.149ms -
6.149ms - 7.243ms -
7.243ms - 8.336ms -
8.336ms - 9.43ms -
9.43ms - 10.524ms -
10.524ms - 11.618ms -
[Estimated Server Metrics]
Requests/sec: 2155.94
Avg Req Time: 927.668µs
Transfer/sec: 449.45KB
更多内容请参阅文档:
https://infinilabs.cn/docs/latest/gateway/getting-started/benchmark/
Rally
如果对 Elasticsearch 熟悉的同学,也可尝试使用 Rally 对 Easysearch 进行测试。
Rally 是 Elasticsearch 的基准测试框架。它可以帮助您完成以下任务:
- 安装 Elasticsearch 集群以进行基准测试
- 跨 Elasticsearch 版本管理基准数据和规范
- 运行基准测试并记录结果
- 通过连接遥测设备来查找性能问题
- 比较性能结果
安装 Rally。
[root@easysearch /]# pip3 install esrally
Requirement already satisfied: esrally in /usr/local/lib/python3.9/site-packages (2.11.0)
Requirement already satisfied: py-cpuinfo==7.0.0 in /usr/local/lib/python3.9/site-packages (from esrally) (7.0.0)
Requirement already satisfied: elastic-transport==8.4.1 in /usr/local/lib/python3.9/site-packages (from esrally) (8.4.1)
Requirement already satisfied: google-resumable-media[requests]==1.1.0 in /usr/local/lib/python3.9/site-packages (from esrally) (1.1.0)
Requirement already satisfied: urllib3==1.26.18 in /usr/local/lib/python3.9/site-packages (from esrally) (1.26.18)
Requirement already satisfied: google-auth==1.22.1 in /usr/local/lib/python3.9/site-packages (from esrally) (1.22.1)
Requirement already satisfied: thespian==3.10.1 in /usr/local/lib/python3.9/site-packages (from esrally) (3.10.1)
Requirement already satisfied: jsonschema==3.1.1 in /usr/local/lib/python3.9/site-packages (from esrally) (3.1.1)
Requirement already satisfied: markupsafe==2.0.1 in /usr/local/lib64/python3.9/site-packages (from esrally) (2.0.1)
Requirement already satisfied: yappi==1.5.1 in /usr/local/lib64/python3.9/site-packages (from esrally) (1.5.1)
Requirement already satisfied: psutil==5.9.4 in /usr/local/lib64/python3.9/site-packages (from esrally) (5.9.4)
Requirement already satisfied: certifi in /usr/local/lib/python3.9/site-packages (from esrally) (2024.7.4)
Requirement already satisfied: elasticsearch[async]==8.6.1 in /usr/local/lib/python3.9/site-packages (from esrally) (8.6.1)
Requirement already satisfied: ijson==2.6.1 in /usr/local/lib/python3.9/site-packages (from esrally) (2.6.1)
Requirement already satisfied: jinja2==3.1.4 in /usr/local/lib/python3.9/site-packages (from esrally) (3.1.4)
Requirement already satisfied: requests<2.32.0 in /usr/local/lib/python3.9/site-packages (from esrally) (2.31.0)
Requirement already satisfied: tabulate==0.8.9 in /usr/local/lib/python3.9/site-packages (from esrally) (0.8.9)
Requirement already satisfied: zstandard==0.21.0 in /usr/local/lib64/python3.9/site-packages (from esrally) (0.21.0)
Requirement already satisfied: docker==6.0.0 in /usr/local/lib/python3.9/site-packages (from esrally) (6.0.0)
Requirement already satisfied: websocket-client>=0.32.0 in /usr/local/lib/python3.9/site-packages (from docker==6.0.0->esrally) (1.8.0)
Requirement already satisfied: packaging>=14.0 in /usr/lib/python3.9/site-packages (from docker==6.0.0->esrally) (20.9)
Requirement already satisfied: aiohttp<4,>=3 in /usr/local/lib64/python3.9/site-packages (from elasticsearch[async]==8.6.1->esrally) (3.10.4)
Requirement already satisfied: pyasn1-modules>=0.2.1 in /usr/local/lib/python3.9/site-packages (from google-auth==1.22.1->esrally) (0.4.0)
Requirement already satisfied: six>=1.9.0 in /usr/lib/python3.9/site-packages (from google-auth==1.22.1->esrally) (1.15.0)
Requirement already satisfied: rsa<5,>=3.1.4 in /usr/local/lib/python3.9/site-packages (from google-auth==1.22.1->esrally) (4.9)
Requirement already satisfied: setuptools>=40.3.0 in /usr/lib/python3.9/site-packages (from google-auth==1.22.1->esrally) (53.0.0)
Requirement already satisfied: cachetools<5.0,>=2.0.0 in /usr/local/lib/python3.9/site-packages (from google-auth==1.22.1->esrally) (4.2.4)
Requirement already satisfied: google-crc32c<2.0dev,>=1.0 in /usr/local/lib64/python3.9/site-packages (from google-resumable-media[requests]==1.1.0->esrally) (1.5.0)
Requirement already satisfied: attrs>=17.4.0 in /usr/local/lib/python3.9/site-packages (from jsonschema==3.1.1->esrally) (24.2.0)
Requirement already satisfied: importlib-metadata in /usr/local/lib/python3.9/site-packages (from jsonschema==3.1.1->esrally) (8.2.0)
Requirement already satisfied: pyrsistent>=0.14.0 in /usr/local/lib64/python3.9/site-packages (from jsonschema==3.1.1->esrally) (0.20.0)
Requirement already satisfied: yarl<2.0,>=1.0 in /usr/local/lib64/python3.9/site-packages (from aiohttp<4,>=3->elasticsearch[async]==8.6.1->esrally) (1.9.4)
Requirement already satisfied: frozenlist>=1.1.1 in /usr/local/lib64/python3.9/site-packages (from aiohttp<4,>=3->elasticsearch[async]==8.6.1->esrally) (1.4.1)
Requirement already satisfied: aiosignal>=1.1.2 in /usr/local/lib/python3.9/site-packages (from aiohttp<4,>=3->elasticsearch[async]==8.6.1->esrally) (1.3.1)
Requirement already satisfied: async-timeout<5.0,>=4.0 in /usr/local/lib/python3.9/site-packages (from aiohttp<4,>=3->elasticsearch[async]==8.6.1->esrally) (4.0.3)
Requirement already satisfied: aiohappyeyeballs>=2.3.0 in /usr/local/lib/python3.9/site-packages (from aiohttp<4,>=3->elasticsearch[async]==8.6.1->esrally) (2.3.7)
Requirement already satisfied: multidict<7.0,>=4.5 in /usr/local/lib64/python3.9/site-packages (from aiohttp<4,>=3->elasticsearch[async]==8.6.1->esrally) (6.0.5)
Requirement already satisfied: pyparsing>=2.0.2 in /usr/lib/python3.9/site-packages (from packaging>=14.0->docker==6.0.0->esrally) (2.4.7)
Requirement already satisfied: pyasn1<0.7.0,>=0.4.6 in /usr/local/lib/python3.9/site-packages (from pyasn1-modules>=0.2.1->google-auth==1.22.1->esrally) (0.6.0)
Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.9/site-packages (from requests<2.32.0->esrally) (3.7)
Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib64/python3.9/site-packages (from requests<2.32.0->esrally) (3.3.2)
Requirement already satisfied: zipp>=0.5 in /usr/local/lib/python3.9/site-packages (from importlib-metadata->jsonschema==3.1.1->esrally) (3.20.0)
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
[root@easysearch /]# esrally --version
esrally 2.11.0
[root@easysearch /]#
关于 Rally 的更多内容,请参阅官方文档:
https://esrally.readthedocs.io/en/stable/
作者:少安事务所
原文:https://mp.weixin.qq.com/s/9eEH38kgsw4i150CJqyxvQ
INFINI Labs 产品更新 | Agent 全新重构,优化指标采集,支持集中配置管理,支持动态下发等功能
资讯动态 • liaosy 发表了文章 • 0 个评论 • 2893 次浏览 • 2023-11-03 15:32
INFINI Labs 产品又更新啦~
本次更新主要有 Agent、Console、Loadgen 等产品,其中 Agent 进行全新重构升级,新版限制了 CPU 资源消耗,优化了内存,相比旧版内存使用率降低 10 倍,极大的降低了对宿主服务器资源占用的压力。同时 Agent 还优化了指标采集,支持集中配置管理,支持动态下发,支持一键安装和自动注册到 Console,可通过 Console 集中管理,并进行关联集群和节点。
以下是本次更新的详细说明。
INFINI Agent v0.7.0
INFINI Agent 是 INFINI Console 的一个可选探针组件,负责采集和上传集群指标和日志等信息,并可通过 Console 管理。Agent 支持主流操作系统和平台,安装包轻量且无任何外部依赖,可以快速方便地安装。
探针 Agent 本次更新如下:
Features
- 限制探针资源消耗,限制 CPU 的使用
- 优化探针内存使用,10 倍降低
- 支持集中配置管理,支持动态下发
- 支持探针一键安装和自动注册
- 优化节点指标采集,仅采集本节点指标
Improvements
- 重构节点统计信息
- 删除未使用的文件
- 添加发现未知节点的 API
- 重构节点发现
- 重构新的 API
INFINI Console v1.10.0
INFINI Console 是一款非常轻量级的多集群、跨版本的搜索基础设施统一管控平台。通过对流行的搜索引擎基础设施进行跨版本、多集群的集中纳管, 企业可以快速方便的统一管理企业内部的不同版本的多套搜索集群。
Console 在线体验: http://demo.infini.cloud (用户名/密码:readonly/readonly)。
探针管理
新版 Agent 安装好之后可在 Console 探针管理界面集中纳管,支持发现 ES 进程 和 疑似 ES 进程,并支持手动和自动批量关联到集群。如下图所示:
实例动态配置
Console 网关实例模块新增配置管理功能,支持实例配置内容查看和修改,修改后的配置支持自动加载生效,无需再去手动重启实例。如下图所示:
集群动态
集群动态界面进行了优化,新增了筛选过滤、时序图等。如下图所示:
Console 本次更新详细清单如下:
Features
- 重构探针注册流程
- 合并精简冗余接口
- 支持实例的配置查看和动态修改
- 允许准入和移除探针
- 监控新增分片级别指标
- 节点级别添加线程池相关指标
Bug fix
- 修复数据迁移/校验任务列表状态显示异常的问题
- 修复数据探索索引选择列表数据不完整的问题
- 修复开发工具集群列表找不到集群的问题
- 修复监控告警详情点击后查询的数据未包含告警时间点产生的数据问题
Improvements
- 优化数据迁移/校验任务剩余时间显示
- 数据探索查询数据支持自定超时时间
- 数据探索字段 TOP5 统计的总数调整为当前时间范围内的文档数
- 监控指标支持自定义时间桶的大小
- 数据检验任务添加导出文档数提示信息
- 优化集群,网关注册输入框,自动去除两边空格
- 完善探针探测未知 ES 节点的流程
- 优化探针安装脚本,新增远程配置服务器参数
- 优化集群动态界面,新增筛选过滤、时序图等
- 优化集群管理界面,新增筛选过滤
INFINI Loadgen v1.8.0
INFINI Loadgen 是一款支持 Easysearch、Elasticsearch 等搜索引擎压测工具,其特点轻量级无依赖、性能强劲、支持高并发、支持模板化参数随机、支持压测端均衡流量控制等。
Loadgen 本次更新如下:
Breaking changes
- 原 Loadrun 功能并入 Loadgen
- 测试请求、断言等使用新的 Loadgen DSL 语法来配置
下载地址:https://release.infinilabs.com/loadgen
期待反馈
欢迎下载体验使用,如果您在使用过程中遇到如何疑问或者问题,欢迎前往 INFINI Labs Github(https://github.com/infinilabs) 中的对应项目中提交 Feature Request 或提交 Bug。
- INFINI Gateway: https://github.com/infinilabs/gateway/issues
- INFINI Console: https://github.com/infinilabs/console/issues
- 下载地址: https://www.infinilabs.com/download
您还可以通过邮件联系我们:hello@infini.ltd
或者拨打我们的热线电话:(+86) 400-139-9200
欢迎加入 Discord 聊天室:https://discord.com/invite/4tKTMkkvVX
也欢迎大家微信扫码添加小助手(INFINI-Labs),加入用户群一起讨论交流。
关于极限科技(INFINI Labs)
极限科技,全称极限数据(北京)科技有限公司,是一家专注于实时搜索与数据分析的软件公司。旗下品牌极限实验室(INFINI Labs)致力于打造极致易用的数据探索与分析体验。
极限科技是一支年轻的团队,采用天然分布式的方式来进行远程协作,员工分布在全球各地,希望通过努力成为中国乃至全球企业大数据实时搜索分析产品的首选,为中国技术品牌输出添砖加瓦。
INFINI 产品更新 20230224|Loadrun 首发亮相
资讯动态 • liaosy 发表了文章 • 0 个评论 • 3780 次浏览 • 2023-02-24 22:58
INFINI Labs 为大家又带来一波产品更新,包括 Gateway v1.10.0、Console v0.8.0、Loadgen v1.5.0、Loadrun v0.1.0,其中 Loadrun 是本次产品更新中首发亮相,它是一个用来批量运行 Loadgen 测试用例的工具。欢迎大家下载体验。
INFINI Gateway v1.10.0
极限网关本次更新如下:
Features
- 配置文件中支持环境变量
- 添加 ratio filter 选项操作,允许立即丢弃请求
- 添加 context_parser filter
- 添加 context_switch filter
- 添加 _sys.* 到请求上下文
更多 Gateway 更新可参考【Gateway 版本历史】。
INFINI Console v0.8.0
本次极限 Console 版本更新主要新增了凭据管理功能,凭据敏感信息使用加密存储。凭据管理可以帮助我们将身份验证信息集中管理,需要用的地方直接引用,提高了身份验证信息的存储安全性。
需要注意的是,如果您是初次安装部署,凭据敏感信息加密密钥在 INFINI Console 安装初始化是自动生成或用户自定义设置。该密钥需要用户妥善保存,如果密钥丢失,当升级 INFINI Console 并且重新初始化系统后,先前保存的凭据信息将无法解密。
在【系统管理】-【凭据管理】列表中可以查询已创建的凭据信息,支持增删查改等基本操作。
更多详情可参考文档(https://www.infinilabs.com/docs/latest/console/reference/system/credential)。
Console 其他功能优化如下:
Improvements
- KV 内存占用优化
Bug fix
- 修复了网关实例列表 CPU 数值显示问题
- 修复了系统服务健康监控错误提示
更多 Console 更新可参考【Console 版本历史】。
INFINI Loadgen v1.5.0
Elasticsearch 性能压测工具 Loadgen 本次更新如下:
Features
- 新增
assert
功能,支持对请求返回进行判断 - 新增
register
功能,支持测试过程中动态注册全局变量 - 新增环境变量功能,配置文件可以动态加载环境变量
- 请求头配置支持访问动态变量
Improvements
- 优化 -l 参数的准确性
- 支持可选跳过 warm-up 阶段
下载地址:https://release.infinilabs.com/loadgen
INFINI Loadrun v0.1.0
Loadrun 是一个用来批量运行 Loadgen 测试用例的工具,不需要重复编写测试用例,通过切换套件配置来快速测试不同的环境配置。
Features
- 支持配置测试套件,批量运行 Loadgen 测试样例并输出测试结果
- 支持测试套件配置 Loadgen 环境变量,快速切换测试环境
- 支持自动启动 INFINI Gateway,方便测试不同配置
下载地址:https://release.infinilabs.com/loadrun
期待反馈
欢迎下载体验使用,如果您在使用过程中遇到如何疑问或者问题,欢迎前往 INFINI Labs Github(https://github.com/infinilabs) 中的对应项目中提交 Feature Request 或提交 Bug。
- INFINI Gateway: https://github.com/infinilabs/gateway/issues
- INFINI Console: https://github.com/infinilabs/console/issues
- 官网: https://www.infinilabs.com
- 下载地址: https://www.infinilabs.com/download
您还可以通过邮件联系我们:hello@infini.ltd
或者拨打我们的热线电话:(+86) 400-139-9200
也欢迎大家微信扫码添加小助手(INFINI-Labs),加入用户群讨论,或者扫码加入我们的知识星球一起学习交流。
最后祝大家周末愉快!
关于极限科技(INFINI Labs)
极限科技,全称极限数据(北京)科技有限公司,是一家专注于实时搜索与数据分析的软件公司。旗下品牌极限实验室(INFINI Labs)致力于打造极致易用的数据探索与分析体验。
极限科技是一支年轻的团队,采用天然分布式的方式来进行远程协作,员工分布在全球各地,希望通过努力成为中国乃至全球企业大数据实时搜索分析产品的首选,为中国技术品牌输出添砖加瓦。
Easysearch 性能测试方法概要
Easysearch • INFINI Labs 小助手 发表了文章 • 0 个评论 • 2697 次浏览 • 2024-08-23 14:47
INFINI Easysearch
INFINI Easysearch 是一个分布式的近实时搜索与分析引擎,核心引擎基于开源的 Apache Lucene。Easysearch 衍生自基于开源协议 Apache 2.0 的 Elasticsearch 7.10 版本,完善和支持更多的企业级功能,优化搜索业务场景,以保证更佳的数据探索与分析体验。
Easysearch 的主要特点:
- 兼容 Elasticsearch,业务代码无需改动;可平滑迁移
- 企业级安全;更稳定可靠
- 企业级管理后台(多集群统一管理,实现运营标准化、自动化)
- 信创适配(全面适配国产 CPU/OS/服务器,支持国密算法)
Easysearch 快速体验,请参阅:
Loadgen
Loadgen 是 Elasticsearch 专属压测工具,用来对 Easysearch 或者网关进行压力测试。
Loadgen 的特点:
- 性能强劲
- 轻量级无依赖
- 支持模板化参数随机
- 支持高并发
- 支持压测端均衡流量控制
- 支持服务端返回值校验
当前最新版本为 1.26.1-598,下载链接如下:
https://release.infinilabs.com/loadgen/stable/
下载并解压安装包后,得到二进制文件。
查看版本信息。
$ ./loadgen-linux-amd64 -v
__ ___ _ ___ ___ __ __
/ / /___\/_\ / \/ _ \ /__\/\ \ \
/ / // ///_\\ / /\ / /_\//_\ / \/ /
/ /__/ \_// _ \/ /_// /_\\//__/ /\ /
\____|___/\_/ \_/___,'\____/\__/\_\ \/
[LOADGEN] A http load generator and testing suite.
[LOADGEN] 1.26.1#598, 2024-08-14 04:50:03, 2024-12-31 10:10:10, 00f15fd86834d7ea539f6d66ee608e3915eef0e3
loadgen 1.26.1 598 2024-08-14 04:50:03 +0000 UTC 2024-12-31 10:10:10 +0000 UTC 00f15fd86834d7ea539f6d66ee608e3915eef0e3
Loadgen 测试
Loadgen 使用非常简单,下面演示如何进行查询压测。
- 建立索引,根据节点数调节分片数。
curl -X PUT -H "Content-Type: application/json" \
-ku admin:xxx "https://localhost:9200/loadtest" -d'
{
"settings":{
"number_of_shards":"3",
"number_of_replicas":1,
"translog":{
"durability":"async"
}
}
}'
{"acknowledged":true,"shards_acknowledged":true,"index":"loadtest"}
- 创建
loadgen.dsl.shawnyan
配置文件,定义查询
GET loadtest/_search
{"query": {"term": {"id.keyword": {"value": $[[id]]}}}}
- 执行压测,
-d
表示秒数,-c
表示并发数。
$ ES_ENDPOINT=https://localhost:9200 ES_USERNAME=admin ES_PASSWORD=xxx ./loadgen-linux-amd64 -run loadgen.dsl.shawnyan -d 10 -c 2
__ ___ _ ___ ___ __ __
/ / /___\/_\ / \/ _ \ /__\/\ \ \
/ / // ///_\\ / /\ / /_\//_\ / \/ /
/ /__/ \_// _ \/ /_// /_\\//__/ /\ /
\____|___/\_/ \_/___,'\____/\__/\_\ \/
[LOADGEN] A http load generator and testing suite.
[LOADGEN] 1.26.1#598, 2024-08-14 04:50:03, 2024-12-31 10:10:10, 00f15fd86834d7ea539f6d66ee608e3915eef0e3
[08-19 16:43:27] [INF] [env.go:179] configuration auto reload enabled
[08-19 16:43:27] [INF] [app.go:285] initializing loadgen, pid: 30792
[08-19 16:43:27] [INF] [app.go:286] using config: /data/es/loadgen.yml
[08-19 16:43:27] [INF] [module.go:155] started plugin: statsd
[08-19 16:43:27] [INF] [module.go:161] all modules are started
[08-19 16:43:27] [INF] [instance.go:78] workspace: /data/es/data/loadgen/nodes/cr1gabqr90cng685o2s0
[08-19 16:43:27] [INF] [app.go:511] loadgen is up and running now.
[08-19 16:43:27] [INF] [main.go:403] loading config: /data/es/loadgen.dsl.shawnyan
21108 requests finished in 9.79061677s, 1.08MB sent, 3.22MB received
[Loadgen Client Metrics]
Requests/sec: 2110.63
Request Traffic/sec: 110.22KB
Total Transfer/sec: 440.00KB
Fastest Request: 680.198µs
Slowest Request: 12.409574ms
Status 200: 21108
[Latency Metrics]
10000 samples of 21108 events
Cumulative: 8.732205871s
HMean: 851.869µs
Avg.: 873.22µs
p50: 839.498µs
p75: 914.298µs
p95: 1.059197ms
p99: 1.327098ms
p999: 4.83579ms
Long 5%: 1.394411ms
Short 5%: 724.226µs
Max: 11.618475ms
Min: 680.198µs
Range: 10.938277ms
StdDev: 289.216µs
Rate/sec.: 2110.63
[Latency Distribution]
680µs - 1.774ms ------------------------------
1.774ms - 2.867ms -
2.867ms - 3.961ms -
3.961ms - 5.055ms -
5.055ms - 6.149ms -
6.149ms - 7.243ms -
7.243ms - 8.336ms -
8.336ms - 9.43ms -
9.43ms - 10.524ms -
10.524ms - 11.618ms -
[Estimated Server Metrics]
Requests/sec: 2155.94
Avg Req Time: 927.668µs
Transfer/sec: 449.45KB
更多内容请参阅文档:
https://infinilabs.cn/docs/latest/gateway/getting-started/benchmark/
Rally
如果对 Elasticsearch 熟悉的同学,也可尝试使用 Rally 对 Easysearch 进行测试。
Rally 是 Elasticsearch 的基准测试框架。它可以帮助您完成以下任务:
- 安装 Elasticsearch 集群以进行基准测试
- 跨 Elasticsearch 版本管理基准数据和规范
- 运行基准测试并记录结果
- 通过连接遥测设备来查找性能问题
- 比较性能结果
安装 Rally。
[root@easysearch /]# pip3 install esrally
Requirement already satisfied: esrally in /usr/local/lib/python3.9/site-packages (2.11.0)
Requirement already satisfied: py-cpuinfo==7.0.0 in /usr/local/lib/python3.9/site-packages (from esrally) (7.0.0)
Requirement already satisfied: elastic-transport==8.4.1 in /usr/local/lib/python3.9/site-packages (from esrally) (8.4.1)
Requirement already satisfied: google-resumable-media[requests]==1.1.0 in /usr/local/lib/python3.9/site-packages (from esrally) (1.1.0)
Requirement already satisfied: urllib3==1.26.18 in /usr/local/lib/python3.9/site-packages (from esrally) (1.26.18)
Requirement already satisfied: google-auth==1.22.1 in /usr/local/lib/python3.9/site-packages (from esrally) (1.22.1)
Requirement already satisfied: thespian==3.10.1 in /usr/local/lib/python3.9/site-packages (from esrally) (3.10.1)
Requirement already satisfied: jsonschema==3.1.1 in /usr/local/lib/python3.9/site-packages (from esrally) (3.1.1)
Requirement already satisfied: markupsafe==2.0.1 in /usr/local/lib64/python3.9/site-packages (from esrally) (2.0.1)
Requirement already satisfied: yappi==1.5.1 in /usr/local/lib64/python3.9/site-packages (from esrally) (1.5.1)
Requirement already satisfied: psutil==5.9.4 in /usr/local/lib64/python3.9/site-packages (from esrally) (5.9.4)
Requirement already satisfied: certifi in /usr/local/lib/python3.9/site-packages (from esrally) (2024.7.4)
Requirement already satisfied: elasticsearch[async]==8.6.1 in /usr/local/lib/python3.9/site-packages (from esrally) (8.6.1)
Requirement already satisfied: ijson==2.6.1 in /usr/local/lib/python3.9/site-packages (from esrally) (2.6.1)
Requirement already satisfied: jinja2==3.1.4 in /usr/local/lib/python3.9/site-packages (from esrally) (3.1.4)
Requirement already satisfied: requests<2.32.0 in /usr/local/lib/python3.9/site-packages (from esrally) (2.31.0)
Requirement already satisfied: tabulate==0.8.9 in /usr/local/lib/python3.9/site-packages (from esrally) (0.8.9)
Requirement already satisfied: zstandard==0.21.0 in /usr/local/lib64/python3.9/site-packages (from esrally) (0.21.0)
Requirement already satisfied: docker==6.0.0 in /usr/local/lib/python3.9/site-packages (from esrally) (6.0.0)
Requirement already satisfied: websocket-client>=0.32.0 in /usr/local/lib/python3.9/site-packages (from docker==6.0.0->esrally) (1.8.0)
Requirement already satisfied: packaging>=14.0 in /usr/lib/python3.9/site-packages (from docker==6.0.0->esrally) (20.9)
Requirement already satisfied: aiohttp<4,>=3 in /usr/local/lib64/python3.9/site-packages (from elasticsearch[async]==8.6.1->esrally) (3.10.4)
Requirement already satisfied: pyasn1-modules>=0.2.1 in /usr/local/lib/python3.9/site-packages (from google-auth==1.22.1->esrally) (0.4.0)
Requirement already satisfied: six>=1.9.0 in /usr/lib/python3.9/site-packages (from google-auth==1.22.1->esrally) (1.15.0)
Requirement already satisfied: rsa<5,>=3.1.4 in /usr/local/lib/python3.9/site-packages (from google-auth==1.22.1->esrally) (4.9)
Requirement already satisfied: setuptools>=40.3.0 in /usr/lib/python3.9/site-packages (from google-auth==1.22.1->esrally) (53.0.0)
Requirement already satisfied: cachetools<5.0,>=2.0.0 in /usr/local/lib/python3.9/site-packages (from google-auth==1.22.1->esrally) (4.2.4)
Requirement already satisfied: google-crc32c<2.0dev,>=1.0 in /usr/local/lib64/python3.9/site-packages (from google-resumable-media[requests]==1.1.0->esrally) (1.5.0)
Requirement already satisfied: attrs>=17.4.0 in /usr/local/lib/python3.9/site-packages (from jsonschema==3.1.1->esrally) (24.2.0)
Requirement already satisfied: importlib-metadata in /usr/local/lib/python3.9/site-packages (from jsonschema==3.1.1->esrally) (8.2.0)
Requirement already satisfied: pyrsistent>=0.14.0 in /usr/local/lib64/python3.9/site-packages (from jsonschema==3.1.1->esrally) (0.20.0)
Requirement already satisfied: yarl<2.0,>=1.0 in /usr/local/lib64/python3.9/site-packages (from aiohttp<4,>=3->elasticsearch[async]==8.6.1->esrally) (1.9.4)
Requirement already satisfied: frozenlist>=1.1.1 in /usr/local/lib64/python3.9/site-packages (from aiohttp<4,>=3->elasticsearch[async]==8.6.1->esrally) (1.4.1)
Requirement already satisfied: aiosignal>=1.1.2 in /usr/local/lib/python3.9/site-packages (from aiohttp<4,>=3->elasticsearch[async]==8.6.1->esrally) (1.3.1)
Requirement already satisfied: async-timeout<5.0,>=4.0 in /usr/local/lib/python3.9/site-packages (from aiohttp<4,>=3->elasticsearch[async]==8.6.1->esrally) (4.0.3)
Requirement already satisfied: aiohappyeyeballs>=2.3.0 in /usr/local/lib/python3.9/site-packages (from aiohttp<4,>=3->elasticsearch[async]==8.6.1->esrally) (2.3.7)
Requirement already satisfied: multidict<7.0,>=4.5 in /usr/local/lib64/python3.9/site-packages (from aiohttp<4,>=3->elasticsearch[async]==8.6.1->esrally) (6.0.5)
Requirement already satisfied: pyparsing>=2.0.2 in /usr/lib/python3.9/site-packages (from packaging>=14.0->docker==6.0.0->esrally) (2.4.7)
Requirement already satisfied: pyasn1<0.7.0,>=0.4.6 in /usr/local/lib/python3.9/site-packages (from pyasn1-modules>=0.2.1->google-auth==1.22.1->esrally) (0.6.0)
Requirement already satisfied: idna<4,>=2.5 in /usr/local/lib/python3.9/site-packages (from requests<2.32.0->esrally) (3.7)
Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib64/python3.9/site-packages (from requests<2.32.0->esrally) (3.3.2)
Requirement already satisfied: zipp>=0.5 in /usr/local/lib/python3.9/site-packages (from importlib-metadata->jsonschema==3.1.1->esrally) (3.20.0)
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
[root@easysearch /]# esrally --version
esrally 2.11.0
[root@easysearch /]#
关于 Rally 的更多内容,请参阅官方文档:
https://esrally.readthedocs.io/en/stable/
作者:少安事务所
原文:https://mp.weixin.qq.com/s/9eEH38kgsw4i150CJqyxvQ
INFINI Labs 产品更新 | Agent 全新重构,优化指标采集,支持集中配置管理,支持动态下发等功能
资讯动态 • liaosy 发表了文章 • 0 个评论 • 2893 次浏览 • 2023-11-03 15:32
INFINI Labs 产品又更新啦~
本次更新主要有 Agent、Console、Loadgen 等产品,其中 Agent 进行全新重构升级,新版限制了 CPU 资源消耗,优化了内存,相比旧版内存使用率降低 10 倍,极大的降低了对宿主服务器资源占用的压力。同时 Agent 还优化了指标采集,支持集中配置管理,支持动态下发,支持一键安装和自动注册到 Console,可通过 Console 集中管理,并进行关联集群和节点。
以下是本次更新的详细说明。
INFINI Agent v0.7.0
INFINI Agent 是 INFINI Console 的一个可选探针组件,负责采集和上传集群指标和日志等信息,并可通过 Console 管理。Agent 支持主流操作系统和平台,安装包轻量且无任何外部依赖,可以快速方便地安装。
探针 Agent 本次更新如下:
Features
- 限制探针资源消耗,限制 CPU 的使用
- 优化探针内存使用,10 倍降低
- 支持集中配置管理,支持动态下发
- 支持探针一键安装和自动注册
- 优化节点指标采集,仅采集本节点指标
Improvements
- 重构节点统计信息
- 删除未使用的文件
- 添加发现未知节点的 API
- 重构节点发现
- 重构新的 API
INFINI Console v1.10.0
INFINI Console 是一款非常轻量级的多集群、跨版本的搜索基础设施统一管控平台。通过对流行的搜索引擎基础设施进行跨版本、多集群的集中纳管, 企业可以快速方便的统一管理企业内部的不同版本的多套搜索集群。
Console 在线体验: http://demo.infini.cloud (用户名/密码:readonly/readonly)。
探针管理
新版 Agent 安装好之后可在 Console 探针管理界面集中纳管,支持发现 ES 进程 和 疑似 ES 进程,并支持手动和自动批量关联到集群。如下图所示:
实例动态配置
Console 网关实例模块新增配置管理功能,支持实例配置内容查看和修改,修改后的配置支持自动加载生效,无需再去手动重启实例。如下图所示:
集群动态
集群动态界面进行了优化,新增了筛选过滤、时序图等。如下图所示:
Console 本次更新详细清单如下:
Features
- 重构探针注册流程
- 合并精简冗余接口
- 支持实例的配置查看和动态修改
- 允许准入和移除探针
- 监控新增分片级别指标
- 节点级别添加线程池相关指标
Bug fix
- 修复数据迁移/校验任务列表状态显示异常的问题
- 修复数据探索索引选择列表数据不完整的问题
- 修复开发工具集群列表找不到集群的问题
- 修复监控告警详情点击后查询的数据未包含告警时间点产生的数据问题
Improvements
- 优化数据迁移/校验任务剩余时间显示
- 数据探索查询数据支持自定超时时间
- 数据探索字段 TOP5 统计的总数调整为当前时间范围内的文档数
- 监控指标支持自定义时间桶的大小
- 数据检验任务添加导出文档数提示信息
- 优化集群,网关注册输入框,自动去除两边空格
- 完善探针探测未知 ES 节点的流程
- 优化探针安装脚本,新增远程配置服务器参数
- 优化集群动态界面,新增筛选过滤、时序图等
- 优化集群管理界面,新增筛选过滤
INFINI Loadgen v1.8.0
INFINI Loadgen 是一款支持 Easysearch、Elasticsearch 等搜索引擎压测工具,其特点轻量级无依赖、性能强劲、支持高并发、支持模板化参数随机、支持压测端均衡流量控制等。
Loadgen 本次更新如下:
Breaking changes
- 原 Loadrun 功能并入 Loadgen
- 测试请求、断言等使用新的 Loadgen DSL 语法来配置
下载地址:https://release.infinilabs.com/loadgen
期待反馈
欢迎下载体验使用,如果您在使用过程中遇到如何疑问或者问题,欢迎前往 INFINI Labs Github(https://github.com/infinilabs) 中的对应项目中提交 Feature Request 或提交 Bug。
- INFINI Gateway: https://github.com/infinilabs/gateway/issues
- INFINI Console: https://github.com/infinilabs/console/issues
- 下载地址: https://www.infinilabs.com/download
您还可以通过邮件联系我们:hello@infini.ltd
或者拨打我们的热线电话:(+86) 400-139-9200
欢迎加入 Discord 聊天室:https://discord.com/invite/4tKTMkkvVX
也欢迎大家微信扫码添加小助手(INFINI-Labs),加入用户群一起讨论交流。
关于极限科技(INFINI Labs)
极限科技,全称极限数据(北京)科技有限公司,是一家专注于实时搜索与数据分析的软件公司。旗下品牌极限实验室(INFINI Labs)致力于打造极致易用的数据探索与分析体验。
极限科技是一支年轻的团队,采用天然分布式的方式来进行远程协作,员工分布在全球各地,希望通过努力成为中国乃至全球企业大数据实时搜索分析产品的首选,为中国技术品牌输出添砖加瓦。
INFINI 产品更新 20230224|Loadrun 首发亮相
资讯动态 • liaosy 发表了文章 • 0 个评论 • 3780 次浏览 • 2023-02-24 22:58
INFINI Labs 为大家又带来一波产品更新,包括 Gateway v1.10.0、Console v0.8.0、Loadgen v1.5.0、Loadrun v0.1.0,其中 Loadrun 是本次产品更新中首发亮相,它是一个用来批量运行 Loadgen 测试用例的工具。欢迎大家下载体验。
INFINI Gateway v1.10.0
极限网关本次更新如下:
Features
- 配置文件中支持环境变量
- 添加 ratio filter 选项操作,允许立即丢弃请求
- 添加 context_parser filter
- 添加 context_switch filter
- 添加 _sys.* 到请求上下文
更多 Gateway 更新可参考【Gateway 版本历史】。
INFINI Console v0.8.0
本次极限 Console 版本更新主要新增了凭据管理功能,凭据敏感信息使用加密存储。凭据管理可以帮助我们将身份验证信息集中管理,需要用的地方直接引用,提高了身份验证信息的存储安全性。
需要注意的是,如果您是初次安装部署,凭据敏感信息加密密钥在 INFINI Console 安装初始化是自动生成或用户自定义设置。该密钥需要用户妥善保存,如果密钥丢失,当升级 INFINI Console 并且重新初始化系统后,先前保存的凭据信息将无法解密。
在【系统管理】-【凭据管理】列表中可以查询已创建的凭据信息,支持增删查改等基本操作。
更多详情可参考文档(https://www.infinilabs.com/docs/latest/console/reference/system/credential)。
Console 其他功能优化如下:
Improvements
- KV 内存占用优化
Bug fix
- 修复了网关实例列表 CPU 数值显示问题
- 修复了系统服务健康监控错误提示
更多 Console 更新可参考【Console 版本历史】。
INFINI Loadgen v1.5.0
Elasticsearch 性能压测工具 Loadgen 本次更新如下:
Features
- 新增
assert
功能,支持对请求返回进行判断 - 新增
register
功能,支持测试过程中动态注册全局变量 - 新增环境变量功能,配置文件可以动态加载环境变量
- 请求头配置支持访问动态变量
Improvements
- 优化 -l 参数的准确性
- 支持可选跳过 warm-up 阶段
下载地址:https://release.infinilabs.com/loadgen
INFINI Loadrun v0.1.0
Loadrun 是一个用来批量运行 Loadgen 测试用例的工具,不需要重复编写测试用例,通过切换套件配置来快速测试不同的环境配置。
Features
- 支持配置测试套件,批量运行 Loadgen 测试样例并输出测试结果
- 支持测试套件配置 Loadgen 环境变量,快速切换测试环境
- 支持自动启动 INFINI Gateway,方便测试不同配置
下载地址:https://release.infinilabs.com/loadrun
期待反馈
欢迎下载体验使用,如果您在使用过程中遇到如何疑问或者问题,欢迎前往 INFINI Labs Github(https://github.com/infinilabs) 中的对应项目中提交 Feature Request 或提交 Bug。
- INFINI Gateway: https://github.com/infinilabs/gateway/issues
- INFINI Console: https://github.com/infinilabs/console/issues
- 官网: https://www.infinilabs.com
- 下载地址: https://www.infinilabs.com/download
您还可以通过邮件联系我们:hello@infini.ltd
或者拨打我们的热线电话:(+86) 400-139-9200
也欢迎大家微信扫码添加小助手(INFINI-Labs),加入用户群讨论,或者扫码加入我们的知识星球一起学习交流。
最后祝大家周末愉快!
关于极限科技(INFINI Labs)
极限科技,全称极限数据(北京)科技有限公司,是一家专注于实时搜索与数据分析的软件公司。旗下品牌极限实验室(INFINI Labs)致力于打造极致易用的数据探索与分析体验。
极限科技是一支年轻的团队,采用天然分布式的方式来进行远程协作,员工分布在全球各地,希望通过努力成为中国乃至全球企业大数据实时搜索分析产品的首选,为中国技术品牌输出添砖加瓦。