Heroku 免费测功机“闲置”中期测试:是啥杀死了它?

Posted

技术标签:

【中文标题】Heroku 免费测功机“闲置”中期测试:是啥杀死了它?【英文标题】:Heroku free dyno "Idling" mid-test: what killed it?Heroku 免费测功机“闲置”中期测试:是什么杀死了它? 【发布时间】:2020-10-07 21:40:17 【问题描述】:

我有一个 Heroku 免费网络应用程序,它在我的初始测试中运行良好,但在更大的测试中它崩溃了:

2020-06-17T21:45:10.068131+00:00 app[web.1]: my last console.log message
2020-06-17T21:46:39.334604+00:00 heroku[web.1]: Idling
2020-06-17T21:46:39.336851+00:00 heroku[web.1]: State changed from up to down
2020-06-17T21:46:40.202867+00:00 heroku[web.1]: Stopping all processes with SIGTERM
2020-06-17T21:46:40.240320+00:00 heroku[router]: at=info method=GET path="/sockjs/432/q7l5m7n6/websocket" host=not-my-real-app.herokuapp.com request_id=ec5f9418-fe2b-4b50-8f92-fb59e315f2ce fwd="CLIENT-IP" dyno=web.1 connect=0ms service=2415813ms status=101 bytes=175 protocol=https
2020-06-17T21:46:40.240323+00:00 heroku[router]: at=info method=GET path="/sockjs/106/0_a5cq0q/websocket" host=not-my-real-app.herokuapp.com request_id=5ca1d1cb-03d4-4107-887b-a206449692c7 fwd="CLIENT-IP" dyno=web.1 connect=0ms service=2321844ms status=101 bytes=175 protocol=https
    +12 other similar messages, one per browser window connected
2020-06-17T21:46:40.288644+00:00 heroku[web.1]: Process exited with status 143
2020-06-17T21:46:40.451795+00:00 heroku[web.1]: Unidling
2020-06-17T21:46:40.459070+00:00 heroku[web.1]: Unidling
2020-06-17T21:46:40.464243+00:00 heroku[web.1]: State changed from down to starting
2020-06-17T21:46:40.469937+00:00 heroku[web.1]: Unidling

日志似乎表明测功机已被 Heroku 停止。这是我第一次使用许多 (14) 个同时 Web 客户端连接进行测试的一段时间,所以它并没有闲置(当然不是 30 分钟),而且我还有很多 (989.08) 小时的免费测功时间。

你知道为什么我的应用程序可能会被杀死吗?我可以升级到爱好帐户,但我不知道这是否会有所帮助。

或者它可能是我的应用程序代码崩溃,尽管日志似乎显示了什么?

详情:

免费网络测功器 mLab MongoDB 插件 地区:欧洲 堆栈:heroku-18 框架:Node.js Slug 大小:500 MiB 的 47.2 MiB

【问题讨论】:

这似乎在每次启动测功机后大约 30 分钟发生。这听起来像是超时,但我认为超时仅适用于空闲进程。 【参考方案1】:

经过多次测试后,我发现 Heroku 在 34:41 到 38:25(分:秒)后杀死了我的 Dyno(从“Unidling”到“Idling”消息)。根据文档,它应该只对空闲的 Dynos 执行此操作。每次我在大约 35 分钟内使用它,即。打开的连接、服务器活动(由服务器日志中的 console.log 消息证明)和客户端-服务器流量。

我切换到“爱好”类型的 Dyno,之后它们就不间断地运行。我刚用了2个小时没有问题,并且测试了它一夜之间闲置。

我可以理解 Heroku 对免费应用程序有限制,但这些应准确记录。他们在没有解释或通知的情况下杀死 Dynos(据我所知),这对于它们作为托管服务的可靠性并不能很好地说明。对我来说,这对他们原本出色的服务来说是一个丑陋的污点。

【讨论】:

以上是关于Heroku 免费测功机“闲置”中期测试:是啥杀死了它?的主要内容,如果未能解决你的问题,请参考以下文章

如何防止 Heroku 时钟测功机睡在免费套餐上?

如何停止用完 Heroku 上的免费测功机

恶意机器人唤醒 heroku 免费应用程序并耗尽所有测功时间

免费在 Heroku 上运行延迟作业

Heroku 上的无操作测功机

Heroku Dyno 问题。免费小时池在 12 小时内使用 24 小时 [关闭]