本站面向开发者与科研用户,提供开源镜像的搜索和下载加速服务。
所有镜像均来源于原始开源仓库,本站不存储、不修改、不传播任何镜像内容。

loadgen Docker 镜像下载 - 轩辕镜像

loadgen 镜像详细信息和使用指南

loadgen 镜像标签列表和版本信息

loadgen 镜像拉取命令和加速下载

loadgen 镜像使用说明和配置指南

Docker 镜像加速服务 - 轩辕镜像平台

国内开发者首选的 Docker 镜像加速平台

极速拉取 Docker 镜像服务

相关 Docker 镜像推荐

热门 Docker 镜像下载

loadgen
infinilabs/loadgen

loadgen 镜像详细信息

loadgen 镜像标签列表

loadgen 镜像使用说明

loadgen 镜像拉取命令

Docker 镜像加速服务

轩辕镜像平台优势

镜像下载指南

相关 Docker 镜像推荐

用于Elasticsearch或通用HTTP服务器的轻量级负载生成器,支持高并发、模板化参数随机选择和流量控制,适用于性能基准测试。
0 次下载activeinfinilabs镜像

loadgen 镜像详细说明

loadgen 使用指南

loadgen 配置说明

loadgen 官方文档

Loadgen:轻量级负载生成器

镜像概述和主要用途

Loadgen是一款专为Elasticsearch或通用HTTP服务器设计的轻量级负载生成器,用于性能基准测试。它具备高并发处理能力,支持模板化参数动态生成和基准端流量控制,轻量级且无依赖,可快速部署以评估服务器在不同负载下的响应性能。

核心功能和特性

  • 性能强劲:高效处理高并发请求,准确反映服务器性能表现
  • 轻量级无依赖:无需额外依赖组件,部署简单,资源占用低
  • 模板化参数:支持多种变量类型(文件、序列、UUID、时间等),实现请求参数动态生成
  • 高并发支持:可配置并发线程数,模拟真实高负载场景
  • 流量控制:支持固定QPS限制,平衡基准测试端流量输出

使用场景和适用范围

  • Elasticsearch性能基准测试(查询、批量数据摄入等操作)
  • 通用HTTP服务器负载压力测试
  • 模拟生产环境流量模式,评估系统稳定性和瓶颈
  • 验证服务器在不同并发量下的响应时间、吞吐量和错误率

详细使用方法和配置说明

配置文件结构

Loadgen通过YAML配置文件(默认loadgen.yml)定义测试参数,核心包含variables(变量定义)和requests(请求定义)两个节点。典型配置示例:

yaml
variables:
  - 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范围数字类型,需通过fromto参数定义取值范围(如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:基础认证信息(usernamepassword
  • url:请求URL(支持变量引用)
  • body:请求体(支持变量引用)
  • body_repeat_times:请求体重复次数(用于批量请求)

查询请求示例

yaml
requests:
  - request:
      method: GET
      basic_auth:
        username: elastic
        password: pass
      url: http://localhost:8000/medcl/_search?q=name:$[[user]]  # URL中引用变量

CLI参数说明

通过命令行参数控制测试执行行为,执行loadgen --help查看完整参数:

参数类型默认值描述
-cint1并发线程数
-compressboolfalse是否启用gzip压缩请求
-configstring"loadgen.yml"配置文件路径(默认当前目录下的loadgen.yml)
-dint5测试持续时间(秒),默认5秒
-debugboolfalse调试模式,发生错误时触发panic并退出
-lint-1限制总请求数(-1表示无限制)
-logstring"info"日志级别,可选:trace, debug, info, warn, error
-rint-1每秒最大请求数(固定QPS),-1表示不限制
-vboolfalse显示版本信息

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

基准测试流程与结果解读

  1. 预热阶段:正式测试前执行所有请求一次进行预热,输出预热结果(含状态码和响应内容),若发生错误提示是否继续。
  2. 测试执行:按配置的并发数、持续时间或请求总数执行测试,实时输出请求状态。
  3. 结果统计:测试结束后输出客户端和服务器指标摘要,包括:
    • 请求数/秒(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参数复制多次请求体,生成批量请求:

yaml
requests:
  - 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,实现有序增长:

yaml
variables:
  - 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(文档级独立)实现变量复用,如路由值与文档字段关联:

yaml
variables:
  - 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"

用户好评

来自真实用户的反馈,见证轩辕镜像的优质服务

oldzhang的头像

oldzhang

运维工程师

Linux服务器

5

"Docker加速体验非常流畅,大镜像也能快速完成下载。"