美文网首页
使用cluster实现多线程

使用cluster实现多线程

作者: 艾石溪 | 来源:发表于2016-12-19 22:02 被阅读57次

    1: 新创建一个master.js,代码如下:

      var cluster = require('cluster');
      var numCPUs = require('os').cpus().length;
    
      if(cluster.isMaster){
        console.log('[master] ' + "start master...");
    
        for(var i = 0; i < numCPUs; i++){
          cluster.fork();
        }
    
        cluster.on('listening', function(worker, address){
          console.log('[master] ' + 'listening: worker' + worker.id + ',pid:' +       worker.process.pid + ', Address:' + address.address + ":" + address.port);
        });
      }else if(cluster.isWorker){
        console.log('[worker] ' + "start worker ..." + cluster.worker.id);
        require('./app.js');
      }
    

    通过上面的代码 可以有多个线程同时开启 访问app.js,结果如图:

    屏幕快照 2016-12-19 下午9.52.00.png

    2: 进行压力测试的工具 选用的是siege

    • 安装siege

      brew install siege
      
    • 使用siege测试

      siege -c 100 -r 2 http://localhost:4000
      
    • siege各部分参数简单说明

      Transactions: 30000 hits //完成30000次处理
      Availability: 100.00 % //100.00 % 成功率
      Elapsed time: 68.59 secs //总共使用时间
      Data transferred: 817.76 MB //共数据传输 817.76 
      MBResponse time: 0.04 secs //响应时间,显示网络连接的速度                     
      Transaction rate: 437.38 trans/sec //平均每秒完成 437.38 次处
      Throughput: 11.92 MB/sec //平均每秒传送数据
      Concurrency: 17.53 //实际最高并发连接数
      Successful transactions: 30000 //成功处理次数
      Failed transactions: 0 //失败处理次数
      Longest transaction: 3.12 //每次传输所花最长时间
      Shortest transaction: 0.00 //每次传输所花最短时间
      

    相关文章

      网友评论

          本文标题:使用cluster实现多线程

          本文链接:https://www.haomeiwen.com/subject/zftxvttx.html