# 运行高并发示例 ## 快速开始 ```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)。