当前位置: 首页 > 知识库问答 >
问题:

工人dyno进入睡眠/空闲状态-Heroku空闲层

公良信然
2023-03-14

Heroku WORKER Dyno(在python环境中运行)在30分钟后进入睡眠状态。工作人员执行芹菜期任务计划,向用户发送电子邮件。

下面是显示实际行为的日志:

2019-05-29T12:49:02.273852+00:00 heroku[web.1]: Idling
2019-05-29T12:49:02.278946+00:00 heroku[web.1]: State changed from up to down
2019-05-29T12:49:02.288616+00:00 heroku[worker.1]: Idling
2019-05-29T12:49:02.306209+00:00 heroku[worker.1]: State changed from up to down
2019-05-29T12:49:03.087205+00:00 heroku[worker.1]: Stopping all processes with SIGTERM
2019-05-29T12:49:03.101608+00:00 app[worker.1]:
2019-05-29T12:49:03.101688+00:00 app[worker.1]: worker: Warm shutdown (MainProcess)
2019-05-29T12:49:03.185191+00:00 app[worker.1]: [2019-05-29 12:49:03,184: INFO/MainProcess] beat: Shutting down...
2019-05-29T12:49:03.297659+00:00 heroku[web.1]: Stopping all processes with SIGTERM
2019-05-29T12:49:03.324661+00:00 app[web.1]: [2019-05-29 12:49:03 +0000] [4] [INFO] Handling signal: term
2019-05-29T12:49:03.326185+00:00 app[web.1]: [2019-05-29 12:49:03 +0000] [11] [INFO] Worker exiting (pid: 11)
2019-05-29T12:49:03.326993+00:00 app[web.1]: [2019-05-29 12:49:03 +0000] [10] [INFO] Worker exiting (pid: 10)
2019-05-29T12:49:03.626898+00:00 app[web.1]: [2019-05-29 12:49:03 +0000] [4] [INFO] Shutting down: Master
2019-05-29T12:49:03.758456+00:00 heroku[web.1]: Process exited with status 0
2019-05-29T12:49:04.817520+00:00 heroku[worker.1]: Process exited with status 0

根据研究,我的理解是webdyno进入睡眠状态,但是工作人员dyno不会睡眠。https://devcenter.heroku.com/articles/free-dyno-hours:

如果一个应用程序有一个免费的网络dyno,并且dyno在30分钟内没有收到任何网络流量,它将Hibernate。

到目前为止,我已激活:https://uptimerobot.com/用5分钟的时间ping网络,dyno可以让它继续运行,但几个小时不够一个月。这样一来,两个迪诺人似乎都保持清醒。

知道为什么会这样吗?潜在的解决方案?

共有1个答案

支华池
2023-03-14

现在,您的两个程序都在使用您帐户上共享的“小时池”中的小时数。如果你的正常运行时间机器人每5分钟ping一次你的网络动态码(这意味着它没有时间睡觉,只要正常运行时间机器人在运行,它就会一直处于运行状态),而你的工作动态码是24/7运行的,那么即使你的信用卡已被保存,你也无法24/7免费运行它们。如果你一直在ping一个网络动态对象,它就不是空闲的。

我不完全确定你从哪里得到250小时的数字,但是如果你想并排运行这些,你必须让其中一个dynos睡觉。现在,由于正常运行时间机器人,这种情况没有发生,所以你可能试图每月使用1460/1000个dyno小时,并关闭你的dynos。

 类似资料:
  • 文件系统负责将空闲块分配给文件,因此它必须跟踪磁盘中存在的所有空闲块。 主要有两种方法,使用它们管理磁盘中的空闲块。 1. 位向量 在这种方法中,空闲空间列表被实现为位图向量。 它包含每个位代表每个块的位数。 如果该块为空,则该位为1,否则为0。最初,所有块都是空的,因此位图向量中的每个位都包含1。 随着空间分配的进行,文件系统开始为文件分配块并将各个位设置为。 2. 链接列表 这是空闲空间管理的

  • > 我是Java多线程的新手。想知道线程池执行器中空闲线程的状态。它在RUNNABLE/WAITING中吗? 如果空闲线程处于RUNNABLE状态,新任务如何附加到空闲线程?AFAIK我们为线程/池分配一个可运行/可调用的对象。但我的问题是ThreadPoolExecitor如何将排队的可运行对象分配给空闲线程??

  • 问题内容: 我想让系统进入睡眠或hibernate状态,这是两种不同的选择。 我将如何使用API​​进行此操作,我真的不想使用Process,并且这不允许我选择执行此操作所需的方法。 问题答案: 或者,如果您喜欢系统调用:

  • 在最新的版本(1.0.0-pre1)中,gRPC 引入了 Channel 的空闲模式(idle mode)。 工作方式(初步) 在 InUseStateAggregator 中,控制 Channel (准备)进入空闲模式和退出空闲模式: final InUseStateAggregator<Object> inUseStateAggregator = new InUseStateAggregato

  • 我有一个多线程应用程序,它将传入的消息发布到rabbitmq交换。使用rabbitmq java客户端,我在应用程序启动时创建一个rabbitmq连接,并在所有线程之间共享它。每个线程都创建一个新通道(threadlocal),这样通道就不会像rabbitmq文档所建议的那样在多个线程之间共享。我正在使用netty,我看到相同数量的rabbitmq通道被创建为netty通道管道线程。到目前为止还不

  • 我已经配置了连接到Cassandra集群的独立spark集群,其中有1个主服务器、1个从服务器和Thrift服务器,该服务器用作Tableau应用程序的JDBC连接器。无论怎样,当我启动任何查询时,从属服务器都会出现在工作者列表中。所有工作负载都由主执行器执行。同样在Thrift web控制台中,我观察到只有一个执行器处于活动状态。 基本上,我希望火花集群的两个执行器上的分布式工作负载能够实现更高