首页 > 解决方案 > Heroku免费测功机“闲置”中期测试:是什么杀死了它?

问题描述

我有一个 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) 的免费测功时间。

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

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

细节:

标签: node.jsherokumlabdyno

解决方案


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

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

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


推荐阅读