Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AWS上相同node.js应用程序的多个实例_Node.js_Amazon Web Services_Multiple Instances - Fatal编程技术网

AWS上相同node.js应用程序的多个实例

AWS上相同node.js应用程序的多个实例,node.js,amazon-web-services,multiple-instances,Node.js,Amazon Web Services,Multiple Instances,AWS上是否有运行同一node.js应用程序的多个实例的选项? 我尝试在我的计算机上运行node.js应用程序的多个实例,但它给了我一个EADDRINUSE错误。当我在代码中更改端口号时,将其另存为新的js文件,这样我就可以运行多个实例。但是我怎么能把这个设定在AWS上呢?AWS Elastic Beanstalk是否有设置此选项的选项?我找不到它 这是我的应用程序的一部分,我在其中与客户端通信,也就是我更改端口号的地方: http.createServer(function(request,

AWS上是否有运行同一node.js应用程序的多个实例的选项? 我尝试在我的计算机上运行node.js应用程序的多个实例,但它给了我一个EADDRINUSE错误。当我在代码中更改端口号时,将其另存为新的js文件,这样我就可以运行多个实例。但是我怎么能把这个设定在AWS上呢?AWS Elastic Beanstalk是否有设置此选项的选项?我找不到它

这是我的应用程序的一部分,我在其中与客户端通信,也就是我更改端口号的地方:

http.createServer(function(request, response){
var path = url.parse(request.url).pathname;
if(path=="/getjson"){

    response.writeHead(200, {'Content-Type': 'text/plain'});
    response.end('_testcb(\''+string+'\')');             
    console.log(new Date() + " - response sent to client");

}

}).listen(port);

或者您有更好的解决方案来运行同一node.js应用程序的多个实例?请注意,多个实例需要共享一个小型数据库。

您可能需要使用节点的群集api

var cluster=require('cluster');
var numpus=require('os').cpus().length;
if(cluster.isMaster){
//叉工。
对于(变量i=0;i
您尝试过amazon负载平衡吗?可以找到更多细节。负载平衡器还可以根据流量管理自动扩展。请参阅更多文档

是否要跨多个aws INTSANCE运行节点应用程序的单个副本?您想在一台“服务器”上运行多个副本,所有副本都侦听不同的端口吗?我对这两个选项都感兴趣。基本上,我希望应用程序根据客户端的数量进行扩展,所以客户端的等待时间尽可能少。我对AWS没有太多经验,所以我对这类问题的最佳实践感兴趣?如果您对AWS没有太多经验,那么我建议您在Elastic Beanstalk上部署节点应用程序。它将允许您在多台服务器上轻松运行应用程序,负载平衡器将均匀分配您的站点流量。好的,如果我是对的,这应该适用于任何具有多个核心的处理器?基本上,我希望应用程序根据客户端的数量进行扩展,因此客户端的等待时间尽可能少。我对AWS没有太多经验,所以我对这类问题的最佳实践感兴趣?
            var cluster = require('cluster');
            var numCPUs = require('os').cpus().length;

            if (cluster.isMaster) {

                    // Fork workers.
                    for (var i = 0; i < numCPUs; i++) {
                            cluster.fork();
                    }

                    cluster.on('exit', function(worker, code, signal) {
                            console.log('Cluster worker ' + worker.process.pid + ' died');
                            cluster.fork();
                    });

            } else {

                    http.createServer(function(request, response){
                    var path = url.parse(request.url).pathname;
                    if(path=="/getjson"){

                                    response.writeHead(200, {'Content-Type': 'text/plain'});
                                    response.end('_testcb(\''+string+'\')');             
                                    console.log(new Date() + " - response sent to client");

                    }

                    }).listen(port);

            }