我服务代码使用的是.netcore2.1,使用memory作为存储。当执行统计任务时,由于数据量大,在和数据库交互并等待返回结果时超过了30分钟时会导致任务没有执行完成,也不报错。
BackgroundJob.Schedule(() => DealImplamentAsync(key, no), TimeSpan.FromSeconds(1));
里面代码逻辑用的都是async/await 来实现的,当执行存储过程需要三十分钟或以上时,他有时候能从返回结果,大部分时候都没有返回结果,也不会报错,不知道为什么?我现在都想换成quartz net 来解决这个问题了。有碰到过类似情况的兄弟吗?
建议在 DealImplamentAsync
中添加 try...catch
代码捕获异常写入日志。
我在底层有个全层抓取异常,但是没有抓取到任何异常,这也是让我疑惑的地方
public Task<OperateResult> StatisticsAsync()
{
return OperateUtil.ExecuteAsync(() => .....);
}
这里面封装了try catch
会不会是内存回收掉了?
我用日志输出发现这个还占用着线程,hangfire monitorapi中的processing 包含这个任务。
@yjq_net: 线程可能死掉了, 相当于结束进程一样, 但是你的IIS 或者说 程序还是正常运行的。 主线程没有挂。 可以在任务里面加日志, 看看到底停在哪里?
你好,有解决这个问题么?我这边也遇见了这个问题,消息队列一直不消耗,数据库也超时了。