【发布时间】:2016-06-18 10:02:23
【问题描述】:
文档看起来非常简单,可以实现 Throng 以使用 Heroku 创建额外的 webworkers。话虽如此,它给我留下了几个问题:
1) 我还需要安装集群吗?从我读到的 Throng 是 Cluster 的抽象,但我没有看到 Cluster 包含在下载中。我错过了什么还是 Throng 准备好开箱即用了吗?
2) 我将这几行代码放在哪里? Angular Fullstack 有一个 server 目录和 server 目录中的 app.js 文件。这是我最好的选择,但我可以想象将它放在 config 目录甚至其他地方会更好。
3) 我需要按什么顺序要求 Throng?我明白,如果事情出了问题,就会把事情搞砸。如果 app.js 是放置 var throng = require('throng') 的正确位置。
以下链接是我在 Throng 上的指示参考: https://github.com/goodeggs/heroku-web-cluster
我将以下代码放在“启动服务器”下的 app.js 文件中:
var throng = require('throng');
var WORKERS = process.env.WEB_CONCURRENCY || 1;
var start = function(){
process.on('SIGTERM', function() {
console.log('Worker exiting');
process.exit();
});
}
throng(start, {
workers: 1,
lifetime: Infinity,
});
当我这样做时,我的终端在本地部署时会收到一个快速重复的错误:
Error: bind EADDRINUSE
at exports._errnoException (util.js:746:11)
at cb (net.js:1178:33)
at rr (cluster.js:592:14)
at Worker.<anonymous> (cluster.js:563:9)
at process.<anonymous> (cluster.js:692:8)
at process.emit (events.js:129:20)
at handleMessage (child_process.js:324:10)
at Pipe.channel.onread (child_process.js:352:11)
Debugger listening on port 5889
events.js:85
throw er; // Unhandled 'error' event
^
【问题讨论】:
标签: javascript node.js multithreading heroku