记一次 xxljob内存溢出排查
执行任务提示内存溢出, 启动xxljob 关闭所有任务 , 内存还是一路狂飙
后面发现xxljob jobhander 下的 callbacklog 文件有数据, 在被读写,
callbacklog :
原来是执行器终止的时候,会批量获取回调队列里的回调入参集合,如果回调入参集合不为空就会记录当前任务执行日志并生成日志文件。如果发生异常则会将回调入参集合序列号为byte[],然后在日志根目录下创建callbacklog目录,生成回调失败记录文件xxl-job-callback-{x}.log,将byte[]写入回调失败日志中进行保存。最后新建一个回调重试守护线程,每隔30秒执行一次。当执行器启动时,守护线程会去读失败日志将byte[]转为回调入参对象集合,如果没问题的话就会删除日志文件并重新执行回调方法。
所以问题就是,执行任务出现异常时将回调入参集合转为byte[]保存到回调日志中,后面再拿到回调日志转回byte[]的时候报错了。
于是,我就找到这个路径下的错误日志,全部delete掉,可是重启又出现.
最终把其他注册服务先停止, 再停xxljob后 删除callbacklog成功, 启动后, 内存正常
xxljob 内存溢出
最新推荐文章于 2024-05-13 13:49:50 发布