0

我在 Heroku 上运行了一个基于 NodeJS 的应用程序服务器,今天早上它开始反复崩溃。它运行一个传统的 1x dyno(即免费层)。Heroku 由于空闲而将其关闭,这很好,但随后它进入了一种状态,我每隔几秒就会无限期地收到来自 Logentries 的崩溃通知。

我可以通过手动将服务器降低到 0 dynos 来阻止它,然后再回到 1。

请注意,服务器所做的第一件事是向 console.log 打印一条调试消息,因此在所有这些崩溃消息中间我没有看到这一事实表明我的应用程序甚至没有运行。

知道可能是什么原因造成的吗?

02 <45>1 2015-12-05T21:03:30.039646+00:00 heroku web.1 - - Idling
125 <45>1 2015-12-05T21:03:30.040156+00:00 heroku web.1 - - State changed from up to down
131 <45>1 2015-12-05T21:03:34.298780+00:00 heroku web.1 - - Stopping all processes with SIGTERM
301 <158>1 2015-12-05T21:03:35.730386+00:00 heroku router - - at=info method=GET path="/" host=<server name redacted>.herokuapp.com request_id=e3c6cdbf-3012-4e5e-ab89-24e8c2eb0e03 fwd="50.0.151.247" dyno=web.1 connect=0ms service=2085875ms status=101 bytes=189
310 <158>1 2015-12-05T21:03:36.299732+00:00 heroku router - - at=error code=H10 desc="App crashed" method=GET path="/" host=<server name redacted>.herokuapp.com request_id=35c719d9-5153-49e8-a640-91f848f853b9 fwd="50.0.151.247" dyno= connect= service= status=503 bytes=
310 <158>1 2015-12-05T21:03:36.730513+00:00 heroku router - - at=error code=H10 desc="App crashed" method=GET path="/" host=<server name redacted>.herokuapp.com request_id=138f048e-4229-4e9f-9e56-8d0d9e691734 fwd="50.0.151.247" dyno= connect= service= status=503 bytes=
126 <45>1 2015-12-05T21:03:36.690366+00:00 heroku web.1 - - Process exited with status 143
310 <158>1 2015-12-05T21:03:40.160167+00:00 heroku router - - at=error code=H10 desc="App crashed" method=GET path="/" host=<server name redacted>.herokuapp.com request_id=0a451a1b-04f2-4f59-bc1e-abc1f2599607 fwd="50.0.151.247" dyno= connect= service= status=503 bytes=
310 <158>1 2015-12-05T21:03:40.586679+00:00 heroku router - - at=error code=H10 desc="App crashed" method=GET path="/" host=<server name redacted>.herokuapp.com request_id=c7681cce-f486-447b-9f76-b36a8db3570b fwd="50.0.151.247" dyno= connect= service= status=503 bytes=
310 <158>1 2015-12-05T21:03:44.024709+00:00 heroku router - - at=error code=H10 desc="App crashed" method=GET path="/" host=<server name redacted>.herokuapp.com request_id=ddd8187f-c8c7-45aa-8add-863b17bdfc5f fwd="50.0.151.247" dyno= connect= service= status=503 bytes=
4

1 回答 1

0

事实证明,我使用的节点版本(4.2.1)试图使用超过传统 1x dyno 上可用的 512MB 内存(这就是为什么 Node 在执行我的服务器代码的第一行之前就一直崩溃的原因)。解决方案是修改 Procfile 以限制 Node 的内存使用量以适应可用内存。Procfile 现在看起来像这样:

web: node --optimize_for_size --max_old_space_size=500 --gc_interval=100 server.js

(请注意,由于我习惯性地有点保守,它是 500 而不是 512)。

于 2015-12-11T21:18:04.503 回答