Heroku(NodeJS服务器)上的重复Logentries崩溃通知



我在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.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,这是我习惯性的保守愿望)。

最新更新