Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

file_file 说明

本用例演示“文件源 → 文件汇“的性能基准测试场景:使用 wpgen 生成测试数据文件,wparse 通过批处理模式读取并解析,输出到文件以测试完整的数据处理管道性能。

目录结构

benchmark/file_file/
├── README.md                    # 本说明文档
├── run.sh                       # 性能测试运行脚本
├── record.md                    # 运行记录文档
├── conf/                        # 配置文件目录
│   ├── wparse.toml             # WarpParse 主配置
│   └── wpgen.toml              # 文件生成器配置
├── models/                      # 模型配置目录
│   ├── sinks/                  # 数据汇配置
│   │   ├── defaults.toml       # 默认配置
│   │   ├── business.d/         # 业务组配置
│   │   │   └── all.toml        # 文件汇组配置
│   │   └── infra.d/            # 基础设施组配置
│   │       ├── default.toml    # 默认数据汇
│   │       ├── error.toml      # 错误数据处理
│   │       ├── miss.toml       # 缺失数据处理
│   │       ├── monitor.toml    # 监控数据处理
│   │       └── residue.toml    # 残留数据处理
│   ├── sources/                # 数据源配置
│   │   └── wpsrc.toml          # 文件源配置
│   ├── wpl/                    # WPL 解析规则目录
│   │   ├── nginx/              # Nginx 日志规则
│   │   ├── apache/             # Apache 日志规则
│   │   └── sysmon/             # 系统监控规则
│   ├── oml/                    # OML 转换规则目录(空)
│   └── knowledge/              # 知识库目录(空)
├── data/                        # 运行数据目录
│   ├── in_dat/                 # 输入数据目录
│   │   └── gen.dat            # 生成数据文件
│   ├── out_dat/                # 输出数据目录
│   │   ├── all.dat            # 主输出文件
│   │   ├── error.dat          # 错误数据输出
│   │   ├── miss.dat           # 缺失数据输出
│   │   ├── monitor.dat        # 监控数据输出
│   │   └── residue.dat        # 残留数据输出
│   ├── logs/                   # 日志文件目录
│   └── rescue/                 # 救援数据目录
└── .run/                       # 运行时数据目录
    └── rule_mapping.dat        # 规则映射数据

快速开始

运行环境要求

  • WarpParse 引擎(需在系统 PATH 中)
  • Bash shell 环境
  • 推荐系统:
    • Linux:最佳性能,支持所有优化功能
    • macOS:良好性能,部分优化功能受限

运行命令

# 进入 benchmark 目录
cd benchmark/file_file

# 默认大规模性能测试(2000 万行数据)
./run.sh

# 中等规模测试(20 万行数据)
./run.sh -m

# 强制重新生成数据(即使已存在)
./run.sh -f

# 指定 worker 数量
./run.sh -w 8

# 使用特定 WPL 规则
./run.sh nginx

# 组合使用
./run.sh -m -w 8 -f nginx

运行参数

参数说明默认值
-m使用中等规模数据集2000万 → 20万行
-f强制重新生成数据智能检测
-w <cnt>指定 worker 数量2
wpl_dirWPL 规则目录名nginx
speed生成器限速(行/秒)0(不限速)

性能测试选项

  • 默认测试:2000 万行数据,单路文件源,2 个 worker
  • 中等测试:20 万行数据,适合快速验证
  • 强制生成-f 参数强制重新生成测试数据
  • 自定义 WPL:支持 nginx、apache、sysmon 等规则

执行逻辑

流程概览

run.sh 脚本执行以下主要步骤:

  1. 环境准备

    • 加载 benchmark 公共函数库
    • 解析命令行参数
    • 设置默认值(大规模:2000万行,中等:20万行)
  2. 初始化环境

    • 初始化 release 模式环境
    • 验证指定的 WPL 规则路径
    • 清理历史数据和日志
  3. 数据生成检查

    • 检查 data/in_dat/gen.dat 是否存在
    • 如果不存在或使用 -f 参数,则生成新数据
  4. 数据生成(如需要)

    • 启动 wpgen 生成数据到 gen.dat
    • 支持并发和批量生成
  5. 批处理执行

    • 使用 wparse batch 读取文件数据
    • 应用 WPL 规则进行解析
    • 数据输出到文件(all.dat)
  6. 性能统计

    • 实时显示处理进度
    • 记录吞吐量、处理时间等指标
    • 输出最终性能报告

数据流向

wpgen 生成器
       ↓
   gen.dat (输入文件)
       ↓
┌────────────────────────────────┐
│      wparse batch             │
│   - 读取文件数据               │
│   - 应用 WPL 规则解析          │
│   - 分发到 sinks              │
└────────────────────────────────┘
    ↓
┌─────────────┬─────────────┐
│    all.dat  │   monitor   │
│  (主输出)   │    sink     │
│             │ (收集统计)  │
└─────────────┴─────────────┘

使用建议

  • 选择 file_file

    • 需要测试完整的数据处理管道
    • 验证输出格式和内容
    • 文件到文件转换场景
  • 选择 file_blackhole

    • 只关心解析性能
    • 批量数据处理
    • 追求最高吞吐量
  • 选择 tcp_blackhole

    • 网络数据源
    • 实时处理需求
    • 可靠传输要求
  • 选择 syslog_blackhole

    • 日志集成
    • 高频数据接收
    • 传统 syslog 场景

贡献与反馈

如发现问题或有性能优化建议,请:

  1. 提交详细的测试环境信息(CPU、内存、存储配置)
  2. 包含完整的性能报告和 I/O 统计
  3. 分享存储优化经验和最佳实践
  4. 提供不同文件格式下的性能对比

本文档最后更新时间:2025-12-16