某线上应用rpc接口调用超时导致定时任务执行失败,该任务使用了XxlJobLogger将rpc错误日记输出到xxl-job的job执行日记文件。
这个日记会在sdk调用callback接口时带上,由于输出的错误日记字符串长度过长,导致xxl-job-admin处理callback请求无法将日记入库。sdk会将失败的callback写入一个重试文件(xxl-job-callback.log),sdk有一个后台线程,定时每几秒会全量load重试文件到内存中。
由于重试也是失败,重试失败的记录也会重新写出失败日记文件,导致重试文件随时间的积累,变得越来越大,load到内存中占用的内存就会越来越多,最终导致应用OOM。