log.info("batch done, size={}, first={}", list.size(),
    list.isEmpty() ? null : list.get(0).getId());

批量任务日志里出现一整段 5000 行的 List 输出,单条日志 2.8MB,采集端直接丢弃超长行,任务成功与否反而看不到。这类现象通常不是突然出现的,往前翻半天日志能看到苗头。

追下去是这么回事:调试时写了直接打印整个 list,上线没删。集合的 toString 会把每个元素展开,行数和字段数一乘就是几兆。

「日志打印结果集」确认了原因之后,改动尽量只碰那一处,顺手改的东西后面最容易出问题。同一份配置存在多处的,先确认改的是被加载的那一份。

新版本先放一台机器上跑一天再全量,问题一般在这段时间暴露。备份不是备了就行,恢复一次才算数,很多备份文件打开才发现是空的。

处理上按这个顺序:改成只打 size 和第一条样本;需要内容时按 id 列表输出 不展开对象;采集端设单行长度上限 超长截断并标记;全量内容落到单独文件 按需打开。

确认没问题再收工,单条日志小于 2KB 采集端不再丢行 任务结果能看到。

作者 9823189