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_dir | WPL 规则目录名 | nginx |
speed | 生成器限速(行/秒) | 0(不限速) |
性能测试选项
- 默认测试:2000 万行数据,单路文件源,2 个 worker
- 中等测试:20 万行数据,适合快速验证
- 强制生成:
-f参数强制重新生成测试数据 - 自定义 WPL:支持 nginx、apache、sysmon 等规则
执行逻辑
流程概览
run.sh 脚本执行以下主要步骤:
-
环境准备
- 加载 benchmark 公共函数库
- 解析命令行参数
- 设置默认值(大规模:2000万行,中等:20万行)
-
初始化环境
- 初始化 release 模式环境
- 验证指定的 WPL 规则路径
- 清理历史数据和日志
-
数据生成检查
- 检查
data/in_dat/gen.dat是否存在 - 如果不存在或使用
-f参数,则生成新数据
- 检查
-
数据生成(如需要)
- 启动
wpgen生成数据到gen.dat - 支持并发和批量生成
- 启动
-
批处理执行
- 使用
wparse batch读取文件数据 - 应用 WPL 规则进行解析
- 数据输出到文件(all.dat)
- 使用
-
性能统计
- 实时显示处理进度
- 记录吞吐量、处理时间等指标
- 输出最终性能报告
数据流向
wpgen 生成器
↓
gen.dat (输入文件)
↓
┌────────────────────────────────┐
│ wparse batch │
│ - 读取文件数据 │
│ - 应用 WPL 规则解析 │
│ - 分发到 sinks │
└────────────────────────────────┘
↓
┌─────────────┬─────────────┐
│ all.dat │ monitor │
│ (主输出) │ sink │
│ │ (收集统计) │
└─────────────┴─────────────┘
使用建议
-
选择 file_file:
- 需要测试完整的数据处理管道
- 验证输出格式和内容
- 文件到文件转换场景
-
选择 file_blackhole:
- 只关心解析性能
- 批量数据处理
- 追求最高吞吐量
-
选择 tcp_blackhole:
- 网络数据源
- 实时处理需求
- 可靠传输要求
-
选择 syslog_blackhole:
- 日志集成
- 高频数据接收
- 传统 syslog 场景
贡献与反馈
如发现问题或有性能优化建议,请:
- 提交详细的测试环境信息(CPU、内存、存储配置)
- 包含完整的性能报告和 I/O 统计
- 分享存储优化经验和最佳实践
- 提供不同文件格式下的性能对比
本文档最后更新时间:2025-12-16