You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NestJS Cron执行异常:每5秒重复打印3次问题排查

Cron定时任务每5秒重复打印3次的问题排查

你的代码如下:

@Cron('*/5 * * * * *')
testCron() {
  console.log('cron');
}

预期每5秒打印一次"cron",但实际每5秒出现3次输出,大概率是以下几种原因:

  • 模块重复实例化:如果包含这个定时任务的模块被多个父模块导入,或者在根模块里重复导入,会导致同一个任务被创建3个实例,每个实例都会触发定时任务。
  • 多进程运行:如果用PM2、Docker或者其他方式启动了3个应用进程,每个进程都会独立执行定时任务,自然会重复打印。
  • Cron调度器重复注册:在NestJS中如果多次调用CronModule.forRoot(),或者手动重复注册了SchedulerRegistry,会生成多个调度器,每个都触发任务。

对应的解决方法:

  • 检查模块导入:确保包含该任务的模块只在一个模块(一般是AppModule)中导入,删除其他地方的重复导入。
  • 排查进程数量:用系统工具查看当前运行的应用进程数,关闭多余的进程;如果确实需要多进程部署,要加分布式锁(比如Redis锁),让只有一个进程执行定时任务。
  • 核对Cron配置:确认CronModule.forRoot()只在根模块初始化一次,没有重复注册调度相关的服务。

内容的提问来源于stack exchange,提问作者ffsdfdfadf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 03:15:58