Heroku - 一直崩溃

时间:2014-04-25 10:01:03

标签: heroku

我正在开发heroku上的node.js应用程序。现在它可以在单个(免费)dyno上运行。

由于某种原因突然我的应用程序崩溃了,现在它一直崩溃(我在添加NewRelic和Librato插件后观察它 - 应用程序在添加这些插件时重新启动) - 应用程序在其中一个插件后首次崩溃添加。所以我删除了两个插件,但问题仍然存在。我想检查什么是错的,我评论了我的应用程序代码,并将其替换为来自网络的简单示例:

index.js

var http = require('http');
http.createServer(function (req, res) {
   res.writeHead(200, {'Content-Type': 'text/plain'});
   res.end('Hello World\n');
}).listen(process.env.PORT);
console.log('Server running at http://127.0.0.1:1337/');

Procfile

web: node index.js
packages.json中的

引擎(由heroku安装的节点为0.10.26)

"engines": {
   "node": "0.10.x"
},

此代码适用于我的电脑(使用工头测试)。 当我尝试将其部署到heroku应用程序崩溃时 - 这是日志:

2014-04-25T09:43:42+00:00 heroku[slug-compiler]: Slug compilation started
2014-04-25T09:43:47.850609+00:00 heroku[api]: Release v30 created by xxx
2014-04-25T09:43:47.850538+00:00 heroku[api]: Deploy 562babb by xxx
2014-04-25T09:43:47+00:00 heroku[slug-compiler]: Slug compilation finished
2014-04-25T09:43:48.588089+00:00 heroku[web.1]: State changed from crashed to starting
2014-04-25T09:43:55.655057+00:00 heroku[web.1]: Starting process with command `node index.js`
2014-04-25T09:43:57.931274+00:00 heroku[web.1]: Process exited with status 8
2014-04-25T09:43:57.945393+00:00 heroku[web.1]: State changed from starting to crashed

当我尝试heroku restart时:

2014-04-25T09:44:43.071357+00:00 heroku[web.1]: State changed from crashed to starting
2014-04-25T09:44:51.834860+00:00 heroku[web.1]: Starting process with command `node index.js`
2014-04-25T09:44:54.250631+00:00 heroku[web.1]: State changed from starting to crashed
2014-04-25T09:44:54.235545+00:00 heroku[web.1]: Process exited with status 8

这让我很疯狂 - 我将许多节点应用程序部署到heroku,这些应用程序正在生产中运行,并且从未出现过这样的问题 - 最新情况如何?


当我将节点引擎版本更改为0.10.20(我正在使用此v localy)时,应用程序已启动且正在运行但当我heroku restart时它再次崩溃...

State changed from up to starting
2014-04-25T10:10:12.990317+00:00 heroku[web.1]: Stopping all processes with SIGTERM
2014-04-25T10:10:15.145758+00:00 heroku[web.1]: Process exited with status 143
2014-04-25T10:10:16.151380+00:00 heroku[web.1]: Starting process with command `node index.js`
2014-04-25T10:10:18.905637+00:00 heroku[web.1]: Process exited with status 8
2014-04-25T10:10:18.929730+00:00 heroku[web.1]: State changed from starting to crashed

第二次重新启动应用程序后up再次运行,第三次重启后再次崩溃(它总是崩溃/退出状态为8)。

3 个答案:

答案 0 :(得分:2)

问题可能在于Heroku本身。大约一小时前发生了一个事故报告,但目前还不清楚导致问题的原因: https://status.heroku.com/incidents/614

与此同时,您可能希望通过HerokuDashboard回滚到应用程序的上一个工作版本。

答案 1 :(得分:1)

问题是您正在尝试启动无效端口。 Heroku没有在环境中设置PORT变量(如果你运行heroku config,你可以看到这一点)。您的PORT变量必须明确地在Procfile中使用。

你应该在你的Procfile中做这样的事情:

web: node index.js $PORT

然后修改index.js代码,说:

var http = require('http');
http.createServer(function (req, res) {
   res.writeHead(200, {'Content-Type': 'text/plain'});
   res.end('Hello World\n');
}).listen(process.argv[2]);
console.log('Server running at http://127.0.0.1:' + process.argv[2]);

答案 2 :(得分:0)

将此配置添加到package.json:

 "scripts": {
"start": "node index.js"},

index.js是您要从此处启动应用程序的文件的名称,例如www.js或server.js

www.piero.ir/en