全部文档
文档中心数据流3.0最佳实践磁盘占用优化与清理

磁盘占用优化与清理

磁盘占用高时,建议先通过页面设置减少新增数据,再根据实际占用来源清理历史数据。不要直接认定是日志表过大,也不要在未确认范围时删除底层文件或数据库记录。

配置入口:全局设置 → 运行设置 → 流程日志

  • 详细:同步执行时记录各节点详细日志,便于排查,但会增加运行时间和存储占用。

  • 极简:同步执行时不记录节点详细日志,适合运行频率高、只关注最终结果的流程。

【极简】只对同步执行生效。定时任务等异步执行仍会记录详细日志,因此异步流程还需要通过降低触发频率、避免实例重叠、限制重试和清理历史实例控制日志增长。

配置入口:全局设置 → 运行设置 → 数据文件自动清理

数据文件包括节点结果、转换步骤输出和数据流 db 文件等运行中间数据。当前系统预置策略会自动清理:

  • 7 天以前运行成功实例的数据文件;

  • 30 天以前运行失败及终止实例的数据文件。

自定义策略不是按天数配置,而是保留最近 X 条成功实例的数据文件。超出数量的成功实例文件会被清理,但所有失败和终止实例文件都会保留。

选择策略时建议:

  • 运行稳定、成功实例很多,希望只保留少量近期结果时,可以自定义较小的成功实例保留条数。

  • 失败和终止实例较多时,使用自定义策略可能导致这些文件长期不清理;应优先修复失败原因,并使用系统预置策略或定期删除超过保留期的实例。

  • 保留周期或条数应满足审计、追溯和问题排查要求,不能只按磁盘空间决定。

自动清理不会处理【队列中】和【进行中】实例的数据文件,也不会清理导出节点等功能生成的附件。具体配置项和清理范围参见数据文件自动清理

  • 查询时尽早过滤行、裁剪字段和聚合,减少每个节点落盘的中间数据量。

  • 避免在多个节点中反复保留相同的大数据集;不需要并行的转换可按顺序执行。

  • 调试完成后移除临时 DEBUG、cURL 和详细服务日志配置,并为运行环境日志配置轮转和保留周期。

  • 不需要长期下载结果时,不要为每次运行都生成导出附件。

  • 大明细导出优先使用 CSV,避免生成单个超大 XLSX;需要长期保存的业务文件可转存到项目认可的文件或对象存储,并按业务规则管理生命周期。

  • 导出附件不会被数据文件自动清理。包含大量历史导出附件的项目,应结合审计要求删除过期实例,或单独制定附件归档和清理方案。

常见来源包括:

  • event_logsruns 等运行存储表持续增长;

  • 节点结果、数据流 db 文件等中间数据未及时清理;

  • 导出附件长期保留;

  • 失败、终止或长期未完成的实例持续产生文件和日志;

  • 应用日志、容器日志未设置轮转;

  • 数据库 WAL、临时文件、备份或其他运行环境目录占用空间。

建议分别查看磁盘中增长最快的目录、数据库中体积最大的表,以及最近一段时间的增长速度。数据库和运行文件可能位于不同磁盘,不能只看单个目录的总占用率。

event_logs 保存流程实例日志。高频运行、节点较多或长期保留详细日志时,该表会快速增长。

清理前应由数据库管理员确认备份和审计保留周期,优先处理保留期外的成功实例日志,失败和终止实例的日志可保留更长时间。先使用相同条件的 SELECT 统计影响范围;数据量较大时按日期或实例范围分批执行,避免单次删除形成长事务和大量 WAL。

以下为 PostgreSQL 示例,用于统计 7 天以前、状态为 SUCCESS 的实例日志:

Copy
SELECT COUNT(*)
FROM deep_pipeline.event_logs AS el
JOIN deep_pipeline.runs AS r ON el.run_id = r.run_id
WHERE r.status = 'SUCCESS'
  AND r.create_timestamp < NOW() - INTERVAL '7 days';

确认范围和备份后,再执行:

Copy
DELETE FROM deep_pipeline.event_logs AS el
USING deep_pipeline.runs AS r
WHERE el.run_id = r.run_id
  AND r.status = 'SUCCESS'
  AND r.create_timestamp < NOW() - INTERVAL '7 days';

删除日志不可恢复,仅限数据库管理员执行。实际 Schema、数据库类型和保留天数应以部署环境及审计要求为准,不要直接套用示例清理生产数据。

PostgreSQL 执行 DELETE 后,被删除空间通常先留在表文件中供后续写入复用,不会立即归还操作系统。清理完成后可由数据库管理员执行常规 VACUUM (ANALYZE),更新统计信息并回收为数据库内部可复用空间。

如果必须让表文件实际缩小,需要由数据库管理员评估 VACUUM FULLpg_repack 等方案。这类操作可能需要额外磁盘空间、持有锁或安排维护窗口;磁盘已经接近写满时,不应在没有扩容和回退方案的情况下直接执行。

  • 对超过合理运行时间、确认无法正常完成的实例,参考批量终止长时间未完成的数据流实例。终止只能停止继续运行,不等于删除历史日志和文件。

  • 对超过保留期且不再需要审计的历史实例,参考批量删除数据流实例。应使用平台提供的实例删除能力,不建议直接删除 runs 等底层表。

批量处理前应生成待处理清单,限定元素白名单、实例状态和时间范围,并按页、按批执行。删除实例会移除运行监控和审计记录,但不会回滚实例已经写入数据库、文件或外部系统的数据。

  1. 暂停高频定时、批量数据流调用和持续失败的调用,先停止新增数据。

  2. 确认占用来自数据库、运行文件、导出附件还是应用日志。

  3. 优先使用页面自动清理和平台实例删除能力处理已确认可清理的数据。

  4. 日志表较大时,由数据库管理员按保留策略分批删除;空间不足以完成数据库维护时,先扩容或迁移,避免直接执行高风险收缩操作。

  5. 空间恢复后,再调整日志模式、自动清理策略、定时频率、超时和实例保留规则。

  • 为日志表、运行文件、导出附件和数据库所在磁盘分别设置容量及增长速度告警;

  • 按审计要求确定成功、失败和终止实例的不同保留周期;

  • 定期检查自动清理任务是否实际执行成功,而不只检查配置是否开启;

  • 定期归档或删除不再使用的数据流、定时计划和历史实例;

  • 容量较大的环境可将数据库与运行文件分开规划容量和告警;

  • 保留扩容和维护操作所需的磁盘余量,避免磁盘接近写满后才开始清理。

回到顶部

咨询热线

400-821-9199