接收文件超过 4GB 不再写入 滚动日志替代方案
症状
长时间运行 NetAssist 接收数据并存文件,文件大小接近 4GB 后,后续收到的数据不再写入文件了——磁盘空间没满、NetAssist 也没报错,但数据静默丢失。
根因
NetAssist 的文件存储使用 32 位文件长度结构——这意味着单文件最大只能记录到约 4GB(2^32 字节)。超过这个值后,内部计数器溢出,写入停止。
解决方案:开启滚动日志
官方建议:选择滚动日志存储而非单文件存储。滚动日志会在文件到达设定大小(比如 100MB)后自动创建新文件继续写,不受 4GB 限制。
详细使用方法见 滚动日志模式。
4GB 够用吗
4GB 的单文件在绝大多数调试场景下是够用的。但如果:
- 跑了好几天的连续采集。
- 数据量特别大(比如每秒产生几 KB 甚至更多)。
- 你的调试场景需要长期不中断运行。
那就很容易触顶。建议任何超过 24 小时的连续调试都开启滚动日志,这是更稳妥的做法。
相关文件存储选项回顾
| 选项 | 适用场景 | 注意事项 |
|---|---|---|
| 单文件(数据文件) | 短时间(几小时内)采集 | 4GB 上限 |
| 单文件(日志文件) | 短时间采集 + 需要时间戳 | 4GB 上限 |
| 滚动日志 | 长时间运行 | 无限创建新文件,需定期清理 |
其他存储相关的历史问题
| 版本 | 修复 |
|---|---|
| V4.3.16 | 接收数据存储支持日志文件和数据文件两种方式(功能引入) |
| V4.3.29 | 增加选项:接收数据不显示(只存不显示) |
| V5.0.6 | 滚动日志功能引入 |
实操建议
7x24 小时压力测试:
- 开启滚动日志。
- 单文件大小设 50~100MB。
- 存完后定期归档旧文件(比如每天一个文件夹)。
- 用脚本批量处理每个文件的内容。
短时间(几小时)联调:
- 用单文件就够了,简单方便。
- 联调结束后直接把文件复制给同事分析。