loadgen Docker 镜像下载 - 轩辕镜像
loadgen 镜像详细信息和使用指南
loadgen 镜像标签列表和版本信息
loadgen 镜像拉取命令和加速下载
loadgen 镜像使用说明和配置指南
Docker 镜像加速服务 - 轩辕镜像平台
国内开发者首选的 Docker 镜像加速平台
极速拉取 Docker 镜像服务
相关 Docker 镜像推荐
热门 Docker 镜像下载
loadgen 镜像详细信息
loadgen 镜像标签列表
loadgen 镜像使用说明
loadgen 镜像拉取命令
Docker 镜像加速服务
轩辕镜像平台优势
镜像下载指南
相关 Docker 镜像推荐
loadgen 镜像详细说明
loadgen 使用指南
loadgen 配置说明
loadgen 官方文档
Loadgen:轻量级负载生成器
镜像概述和主要用途
Loadgen是一款专为Elasticsearch或通用HTTP服务器设计的轻量级负载生成器,用于性能基准测试。它具备高并发处理能力,支持模板化参数动态生成和基准端流量控制,轻量级且无依赖,可快速部署以评估服务器在不同负载下的响应性能。
核心功能和特性
- 性能强劲:高效处理高并发请求,准确反映服务器性能表现
- 轻量级无依赖:无需额外依赖组件,部署简单,资源占用低
- 模板化参数:支持多种变量类型(文件、序列、UUID、时间等),实现请求参数动态生成
- 高并发支持:可配置并发线程数,模拟真实高负载场景
- 流量控制:支持固定QPS限制,平衡基准测试端流量输出
使用场景和适用范围
- Elasticsearch性能基准测试(查询、批量数据摄入等操作)
- 通用HTTP服务器负载压力测试
- 模拟生产环境流量模式,评估系统稳定性和瓶颈
- 验证服务器在不同并发量下的响应时间、吞吐量和错误率
详细使用方法和配置说明
配置文件结构
Loadgen通过YAML配置文件(默认loadgen.yml)定义测试参数,核心包含variables(变量定义)和requests(请求定义)两个节点。典型配置示例:
yamlvariables: - name: ip type: file path: test/ip.txt # 从文件加载变量 - name: user type: file path: test/user.txt - name: id type: sequence # 自增数字变量 - name: uuid type: uuid # UUID生成变量 - name: now_local type: now_local # 本地时间变量 requests: - request: method: GET basic_auth: username: elastic password: pass url: http://localhost:8000/medcl/_search body: '{ "query": {"match": { "name": "$[[user]]" }}}' # 使用变量
变量类型及使用
variables节点定义动态参数,通过name标识,在请求中使用$[[变量名]]引用。支持的变量类型说明:
| 类型 | 描述 |
|---|---|
| file | 从外部文本文件加载,每行一个值,随机选取 |
| sequence | 自增数字类型,从0开始逐次递增 |
| range | 范围数字类型,需通过from和to参数定义取值范围(如from:10, to:20) |
| uuid | 生成UUID格式字符串(如c3qj9123r0okahraiej0) |
| now_local | 当前时间(本地时区),格式YYYY-MM-DD HH:MM:SS |
| now_utc | 当前时间(UTC时区),格式YYYY-MM-DD HH:MM:SS |
| now_unix | 当前Unix时间戳(秒级) |
文件类型变量示例:
创建test/user.txt文件,每行一个值:
medcl elastic admin
请求中通过$[[user]]随机引用上述值之一。
请求定义格式
requests节点按顺序定义待执行的HTTP请求,支持固定参数和模板化参数请求。支持的请求属性包括:
method:HTTP方法(GET/POST等)basic_auth:基础认证信息(username和password)url:请求URL(支持变量引用)body:请求体(支持变量引用)body_repeat_times:请求体重复次数(用于批量请求)
查询请求示例:
yamlrequests: - request: method: GET basic_auth: username: elastic password: pass url: http://localhost:8000/medcl/_search?q=name:$[[user]] # URL中引用变量
CLI参数说明
通过命令行参数控制测试执行行为,执行loadgen --help查看完整参数:
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
| -c | int | 1 | 并发线程数 |
| -compress | bool | false | 是否启用gzip压缩请求 |
| -config | string | "loadgen.yml" | 配置文件路径(默认当前目录下的loadgen.yml) |
| -d | int | 5 | 测试持续时间(秒),默认5秒 |
| -debug | bool | false | 调试模式,发生错误时触发panic并退出 |
| -l | int | -1 | 限制总请求数(-1表示无限制) |
| -log | string | "info" | 日志级别,可选:trace, debug, info, warn, error |
| -r | int | -1 | 每秒最大请求数(固定QPS),-1表示不限制 |
| -v | bool | false | 显示版本信息 |
Docker部署示例
假设镜像名称为infinilabs/loadgen,通过以下命令运行(需挂载本地配置文件到容器内):
bash# 基础用法:运行30秒,100并发线程,启用gzip压缩 docker run -v $(pwd)/loadgen.yml:/app/loadgen.yml infinilabs/loadgen -d 30 -c 100 -compress # 限制QPS为200,日志级别debug docker run -v $(pwd)/loadgen.yml:/app/loadgen.yml infinilabs/loadgen -d 60 -c 50 -r 200 -log debug # 限制总请求数为***,使用自定义配置文件 docker run -v $(pwd)/custom-config.yml:/app/custom-config.yml infinilabs/loadgen -config custom-config.yml -l *** -c 80
基准测试流程与结果解读
- 预热阶段:正式测试前执行所有请求一次进行预热,输出预热结果(含状态码和响应内容),若发生错误提示是否继续。
- 测试执行:按配置的并发数、持续时间或请求总数执行测试,实时输出请求状态。
- 结果统计:测试结束后输出客户端和服务器指标摘要,包括:
- 请求数/秒(Requests/sec)
- 平均响应时间(Avg Req Time)
- 错误数(Number of Errors)
- 各状态码分布(如Status 200数量)
典型测试输出示例:
5253 requests in 32.756483336s, 524.61KB sent, 2.49MB received [Loadgen Client Metrics] Requests/sec: 175.10 Request Traffic/sec: 17.49KB Total Transfer/sec: 102.34KB Avg Req Time: 5.711022ms Fastest Request: 440.448µs Slowest Request: 3.624302658s Number of Errors: 0 Status 200: 5253
注意:Loadgen结果为累积统计值,可能存在一定误差。建议结合Kibana仪表板实时监控Elasticsearch的CPU、内存、IO等关键指标。
高级使用场景
模拟批量数据摄入
通过body_repeat_times参数复制多次请求体,生成批量请求:
yamlrequests: - request: method: POST url: http://localhost:8000/_bulk # Elasticsearch bulk API body_repeat_times: 1000 # 随机复制请求体1000次生成批量数据 body: "{ \"index\" : { \"_index\" : \"medcl-y4\",\"_type\":\"doc\", \"_id\" : \"$[[uuid]]\" } }\n{ \"id\" : \"$[[id]]\",\"field1\" : \"$[[user]]\",\"ip\" : \"$[[ip]]\" }\n"
生成固定数量的文档
使用-l参数限制总请求数,结合单请求单文档配置,生成固定数量文档:
bash# 配置文件中每个请求生成1个文档,通过-l控制总数量 docker run -v $(pwd)/loadgen.yml:/app/loadgen.yml infinilabs/loadgen -l 50000 -c 100
自增ID确保文档顺序
使用sequence类型变量作为文档ID,实现有序增长:
yamlvariables: - name: id type: sequence # 自增数字变量(0,1,2,...) requests: - request: method: POST url: http://localhost:8000/medcl-test/_bulk body_repeat_times: 1 body: "{ \"index\" : { \"_index\" : \"medcl-test\", \"_id\" : \"$[[id]]\" } }\n{ \"id\" : \"$[[id]]\" }\n" # ID与文档字段同步
请求上下文中的变量复用
通过runtime_variables(请求级共享)和runtime_body_line_variables(文档级独立)实现变量复用,如路由值与文档字段关联:
yamlvariables: - name: suffix type: range from: 10 to: 15 # 随机生成10-15的数字 requests: - request: method: POST runtime_variables: batch_no: id # 整个请求批次共享一个batch_no runtime_body_line_variables: routing_no: uuid # 每个文档独立的routing_no url: http://localhost:8000/_bulk body_repeat_times: 10 # 生成10个文档 body: "{ \"create\" : { \"_index\" : \"test-$[[suffix]]\", \"routing\" : \"$[[routing_no]]\" } }\n{ \"batch_number\" : \"$[[batch_no]]\", \"routing_no\" : \"$[[routing_no]]\" }\n"
用户好评
来自真实用户的反馈,见证轩辕镜像的优质服务
常见问题
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
轩辕镜像下载加速使用手册
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
登录仓库拉取
通过 Docker 登录认证访问私有仓库
Linux
在 Linux 系统配置镜像加速服务
Windows/Mac
在 Docker Desktop 配置镜像加速
Docker Compose
Docker Compose 项目配置加速
K8s Containerd
Kubernetes 集群配置 Containerd
宝塔面板
在宝塔面板一键配置镜像加速
群晖
Synology 群晖 NAS 配置加速
飞牛
飞牛 fnOS 系统配置镜像加速
极空间
极空间 NAS 系统配置加速服务
爱快路由
爱快 iKuai 路由系统配置加速
绿联
绿联 NAS 系统配置镜像加速
威联通
QNAP 威联通 NAS 配置加速
Podman
Podman 容器引擎配置加速
Singularity/Apptainer
HPC 科学计算容器配置加速
其他仓库配置
ghcr、Quay、nvcr 等镜像仓库
专属域名拉取
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429