群集NodeJS仅在桌面Chrome上

时间:2016-03-23 18:28:40

标签: angularjs node.js express

我正在试验群集和nodejs。我有这个简单的服务器,它返回一个worker的当前PID。为了测试它,我有一个Angular应用程序,在' / pid'上进行100 $ http.get()调用。端点(代码包含在下面)。

Chrome for Desktop会在正常加载/重新加载后的约8秒内为所有100个调用返回相同的PID。如果我重新加载(ctrl + shift + r),我会在大约3秒内随机获得4个独立的PIDS。显然,那里有性能提升,但我似乎无法通过标准加载/重新加载获得相同的结果。

我在Firefox和Chrome Android中获得了理想的行为。

我还没有真正找到这个。我不认为它是一个Angular缓存问题,因为它可以在其他浏览器上正常运行。

我尝试在我的html中添加一个no-cache元标记,以防万一,但这并没有改变anthing。

我已尝试在我的计算机和其他计算机上进行此操作,以确保我的设置不会出现问题。

关于如何在每次加载时正确地在chrome上正常工作的任何想法?

NodeJS代码

var express = require('express');
var cluster = require('express-cluster');
var cors = require('cors');
var fs = require('fs');
cluster(function(worker) {
    var app = express();
    app.use(express.static('public'));
    app.use(cors())
    app.get('/pid', function (req, res) {
        for(var i = 0; i < 10000; i++) {
        //increase load with loop, to increase need for workers
        }
      res.send("" + worker.process.pid);
    });
    console.log("Worker id: " + worker.id);
    return app.listen(3009);
}, {count:4});

Angular Code

angular.module('cluster', []).controller('mainCtrl',['$http','$scope', function($http, $scope){
    $scope.pids = [];
    for(var i = 0; i < 100; i++) {
      $http.get("http://localhost:3009/pid").then(function(response) {
        $scope.pids.push(response.data);
      }, function(error) {

      });
    }
}]);

输出错误(正常Chrome重新加载)

20990
20990
20990
20990
...

预期输出(Chrome硬盘重新加载/其他浏览器)

20817
20743
20818
20746
...

HTML只是pids数组的重复次数。

这是在MEAN Bitnami堆栈上只有1个内核的EC2实例上运行。

0 个答案:

没有答案