node.js - 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) 的免费测功时间。
你知道为什么我的应用程序可能会被杀死吗?我可以升级到一个爱好帐户,但我不知道这是否会有所帮助。
或者它可能是我的应用程序代码崩溃,尽管日志似乎显示了什么?
细节:
- 免费网络测功机
- mLab MongoDB 插件
- 地区:欧洲
- 堆栈:heroku-18
- 框架:Node.js
- 蛞蝓大小:47.2 MiB 或 500 MiB
解决方案
经过多次测试后,我发现 Heroku 在 34:41 到 38:25(分钟:秒)之后杀死了我的 Dyno(从“Unidling”到“Idling”消息)。根据文档,它应该只对空闲的 Dynos 执行此操作。每次我在大约 35 分钟内使用它,即。打开的连接、服务器活动(由服务器日志中的 console.log 消息证明)和客户端-服务器流量。
我切换到“爱好”类型的 Dyno,然后他们不间断地运行。我只用了 2 个小时没有问题,并测试了它一夜之间闲置。
我可以理解 Heroku 对免费应用程序的限制,但这些应该被准确记录。他们在没有解释或通知的情况下杀死了 Dynos(据我所知),这对于它们作为托管服务的可靠性并不能很好地说明。对我来说,这对他们原本出色的服务来说是一个丑陋的污点。
推荐阅读
- sed - sed 命令在链接中查找 .css 文件
- django - Django ORM“。” vs "_" 访问外键 id 时
- google-cloud-platform - 未使用代理服务器创建 BigQuery 访问令牌
- c++ - 我们如何有效地压缩 DNA 字符串
- dart - 是否可以使用 charts_flutter 包旋转饼图?
- javascript - 从带有淘汰绑定的 JS 开关盒返回特定值
- sql-server - 如何从 InTouch Wonderware 或 SQL Server 2014 调用 SOAP Web 服务
- influxdb - Telegraf - 如果输入插件(服务)关闭,则发送错误/0/false
- github - 有什么方法可以动态替换 Github 存储库中的部分代码?
- android - 是否可以从 Fragment 获取“RecyclerView”?