【问题标题】:Why Quartz Scheduler stops working on Heroku after x minutes?为什么 Quartz Scheduler 在 x 分钟后停止在 Heroku 上工作?
【发布时间】:2020-02-09 15:50:43
【问题描述】:

我正在尝试创建一个类似的应用程序,如本文https://devcenter.heroku.com/articles/scheduled-jobs-custom-clock-processes-java-quartz-rabbitmq 在 Heroku 上建议的此处提到的应用程序 https://github.com/heroku/devcenter-java-quartz-rabbitmq。 唯一的区别是目前我有一个web 应用程序什么都不做("Hello World")和一个scheduler 应用程序打印当前时间。 不幸的是,在我没有使用该应用程序的 30 分钟后,webscheduler 都停止工作:

2020-02-09T15:20:17.911457+00:00 app[scheduler.1]: 15:20:17.911 [SpringContextShutdownHook] INFO  o.s.s.c.ThreadPoolTaskExecutor - Shutting down ExecutorService 'applicationTaskExecutor'
2020-02-09T15:20:18.151399+00:00 app[web.1]: 15:20:18.151 [SpringContextShutdownHook] INFO  org.quartz.core.QuartzScheduler - Scheduler quartzScheduler_$_NON_CLUSTERED paused.
2020-02-09T15:20:18.151689+00:00 app[web.1]: 15:20:18.151 [SpringContextShutdownHook] INFO  o.s.s.quartz.SchedulerFactoryBean - Shutting down Quartz Scheduler
2020-02-09T15:20:18.151775+00:00 app[web.1]: 15:20:18.151 [SpringContextShutdownHook] INFO  org.quartz.core.QuartzScheduler - Scheduler quartzScheduler_$_NON_CLUSTERED shutting down.
2020-02-09T15:20:18.151840+00:00 app[web.1]: 15:20:18.151 [SpringContextShutdownHook] INFO  org.quartz.core.QuartzScheduler - Scheduler quartzScheduler_$_NON_CLUSTERED paused.
2020-02-09T15:20:18.152244+00:00 app[web.1]: 15:20:18.152 [SpringContextShutdownHook] INFO  org.quartz.core.QuartzScheduler - Scheduler quartzScheduler_$_NON_CLUSTERED shutdown complete.
2020-02-09T15:20:18.152871+00:00 app[web.1]: 15:20:18.152 [SpringContextShutdownHook] INFO  o.s.s.c.ThreadPoolTaskExecutor - Shutting down ExecutorService 'applicationTaskExecutor'
2020-02-09T15:20:18.135436+00:00 heroku[web.1]: Stopping all processes with SIGTERM
2020-02-09T15:20:18.247822+00:00 heroku[web.1]: Process exited with status 143
2020-02-09T15:20:18.123889+00:00 heroku[scheduler.1]: Process exited with status 143

Procfile 非常简单:

web: java $JAVA_OPTS -Dserver.port=$PORT -jar target/*.jar
scheduler: java $JAVA_OPTS -cp target/*.jar -Dloader.main=algotrading.app.scheduler.SchedulerApp org.springframework.boot.loader.PropertiesLauncher

我在示例中遗漏了什么吗? 问候 回复

【问题讨论】:

  • 嗨@codefinger,是的,但在我看来,该帖子中提到的关于worker dynos 的例外情况应该适用于scheduler dynos...否则它是一个损坏的功能...编辑后我看到你为 Heroku 工作:所以回顾一下,我是否需要购买一个 Hobby dyno 来让调度器 dyno 一整天都按预期工作?谢谢
  • 我尝试将SchedulerApp 配置为worker,但它还是停止了......所以我想知道下面这句话是否属实:Worker dynos do not sleep, because they do not respond to web requests. Be mindful of this as they may run 24/7 and consume from your pool of hours
  • 您在日志中看到工作人员/调度程序的 SIGTERM 吗?
  • 嗨@codefinger,谢谢。是的,我可以看到:Stopping all processes with SIGTERM 后跟 Process exited with status 143 用于两个测功机(webworker

标签: java heroku quartz-scheduler


【解决方案1】:

我按照@codefinger 的建议打开了一张票,并立即获得了支持。我的问题的答案是,当您使用带有免费测功机的web 测功机时,当它变得空闲(由于测功机睡眠)时,所有其他测功机也会变得空闲。

这是预期的行为。 他们会尽快更新文档。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-13
    • 1970-01-01
    • 2016-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    相关资源
    最近更新 更多