新增:高并发示例和文档

新增文件:
- example/concurrent_example.go: 5 分钟高并发测试示例
  - 场景 1: 并发写入 6000 条消息
  - 场景 2: 并发查询 4000 次
  - 场景 3: 混合读写测试
  - 场景 4: 持续压测 4 分钟(实时进度显示)
  - 场景 5: 统计信息汇总

- example/README.md: 完整的示例文档
  - 所有示例的使用说明
  - 最佳实践和性能优化建议
  - 常见问题排查

- example/RUN_CONCURRENT.md: 快速运行指南
  - 运行方式和时间预估
  - 后台运行方法
  - 自定义参数说明

修改文件:
- .gitignore: 修正 example 目录的忽略规则
  - 移除对整个 example/ 的忽略
  - 只忽略 example/test_*/ 测试目录

性能指标:
- 写入吞吐量:~220 msg/s
- 查询吞吐量:~400-1500 query/s
- 总数据量:53661 条消息,1.1 MB
This commit is contained in:
2025-10-04 01:08:18 +08:00
parent 5c028a55b3
commit 4ec153c1ac
4 changed files with 692 additions and 1 deletions

92
example/RUN_CONCURRENT.md Normal file
View File

@@ -0,0 +1,92 @@
# 运行高并发示例
## 快速开始
```bash
cd example
go run concurrent_example.go
```
## 预计运行时间
**总时间:约 5 分钟**
- 场景 1 (并发写入): ~27 秒
- 场景 2 (并发查询): ~3 秒
- 场景 3 (混合读写): ~14 秒
- 场景 4 (持续压测): 4 分钟
- 场景 5 (统计汇总): ~10 秒
## 后台运行
如果想在后台运行并保存日志:
```bash
go run concurrent_example.go > output.log 2>&1 &
echo $! > pid.txt
# 查看实时输出
tail -f output.log
# 停止程序
kill $(cat pid.txt)
rm pid.txt
```
## 查看进度
程序在场景 4持续压测阶段会每 10 秒显示一次进度:
```
[进度] 已运行 10 秒 - 写入: 1951 条, 查询: 1920 次
[进度] 已运行 20 秒 - 写入: 3902 条, 查询: 3840 次
...
```
## 性能指标
根据测试结果,您应该会看到:
- **写入吞吐量**: ~220-240 msg/s
- **查询吞吐量**: ~400-1500 query/s取决于数据量
- **并发处理**: 3 个 topic 同时写入和查询
## 故障排查
### 问题:程序卡住不动
如果程序在某个阶段卡住:
1. 检查磁盘空间是否充足
2. 检查是否有其他进程占用文件
3. 尝试清理测试目录:`rm -rf test_concurrent`
### 问题:查询出现 EOF 错误
这是正常现象!当 tailer 正在处理文件时,查询可能会读取到不完整的记录。程序会自动处理这些错误。
### 问题:性能比预期低
可能的原因:
- 磁盘性能较慢(特别是在虚拟机或网络存储上)
- 系统负载较高
- 索引批量同步设置(可以通过修改 `index.go` 中的 `DefaultSyncBatch` 调整)
## 自定义测试
如果想调整测试参数,编辑 `concurrent_example.go`
```go
// 场景 1每个 topic 写入的消息数
messagesPerTopic := 2000
// 场景 2每个 goroutine 的查询次数
queriesPerGoroutine := 200
// 场景 4持续压测时间
stressTestDuration := 4 * time.Minute
```
## 预期输出示例
完整输出请参考 [README.md](README.md)。