全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

node.js中cluster的使用教程

本文主要给大家介绍了关于node.js中cluster使用的相关教程,分享出来供大家参考学习,下面来看看详细的介绍:

一、使用NODE中cluster利用多核CPU

var cluster = require('cluster'); 
var http = require('http'); 
var numCPUs = require('os').cpus().length; 
if (cluster.isMaster) { 
// 创建工作进程 
for (var i = 0; i < numCPUs; i++) { 
cluster.fork(); 
} 
cluster.on('death', function(worker) { 
console.log('worker ' + worker.pid + ' died'); 
cluster.fork();//重启子进程 
}); 
} else { 
// 工作进程创建http 服务器 
http.Server(function(req, res) { 
res.writeHead(200); 
res.end("hello world\n"); 
}).listen(8000); 
} 

二、通过消息传递来监控工作进程状态

var cluster = require('cluster'); 
var http = require('http'); 
var numCPUs = require('os').cpus().length; 
var rssWarn = (12 * 1024 * 1024) 
  , heapWarn = (10 * 1024 * 1024) 
if(cluster.isMaster) { 
  for(var i=0; i<numCPUs; i++) { 
    var worker = cluster.fork(); 
    worker.on('message', function(m) { 
      if (m.memory) { 
        console.log(m.memory.rss,rssWarn) 
        if(m.memory.rss > rssWarn) { 
          console.log('Worker ' + m.process + ' using too much memory.') 
        } 
      } 
 
    }) 
  } 
} else { 
// 服务器 
  http.createServer(function(req,res) { 
    res.writeHead(200); 
    res.end('hello world\n') 
  }).listen(8000) 
// 每秒报告一次状态 
  setInterval(function report(){ 
    process.send({memory: process.memoryUsage(), process: process.pid}); 
  }, 1000) 
} 

三、终止进程

var cluster = require('cluster'); 
var http = require('http'); 
var numCPUs = require('os').cpus().length; 
var rssWarn = (50 * 1024 * 1024) 
  , heapWarn = (50 * 1024 * 1024) 
var workers = {} 
if(cluster.isMaster) { 
  for(var i=0; i<numCPUs; i++) { 
    createWorker() 
  } 
  setInterval(function() { 
    var time = new Date().getTime() 
    for(pid in workers) { 
      if(workers.hasOwnProperty(pid) && 
        workers[pid].lastCb + 5000 < time) { 
        console.log('Long running worker ' + pid + ' killed') 
        workers[pid].worker.kill() 
        delete workers[pid] 
        createWorker() 
      } 
    } 
  }, 1000) 
} else { 
// 服务器 
  http.Server(function(req,res) { 
// 打乱200 个请求中的1 个 
    if (Math.floor(Math.random() * 200) === 4) { 
      console.log('Stopped ' + process.pid + ' from ever finishing') 
      while(true) { continue } 
    } 
    res.writeHead(200); 
    res.end('hello world from ' + process.pid + '\n') 
  }).listen(8000) 
// 每秒钟报告一次状态 
  setInterval(function report(){ 
    process.send({cmd: "reportMem", memory: process.memoryUsage(), 
      process: process.pid}) 
  }, 1000) 
} 
function createWorker() { 
  var worker = cluster.fork() 
  console.log('Created worker: ' + worker.pid) 
// 允许开机时间 
  workers[worker.pid] = {worker:worker, lastCb: new Date().getTime()-1000} 
  worker.on('message', function(m) { 
    if(m.cmd === "reportMem") { 
      workers[m.process].lastCb = new Date().getTime() 
      if(m.memory.rss > rssWarn) { 
        console.log('Worker ' + m.process + ' using too much memory.') 
      } 
    } 
  }) 
} 

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。


# nodejs cluster  # nodejs的cluster  # cluster node  # 多核  # 给大家  # 来看看  # 这篇文章  # 谢谢大家  # 重启  # 创建工作  # 每秒钟  # 有疑问  # pid  # log  # died  # worker  # function  # death  # console  # fork  # Server  # listen  # rssWarn 


相关文章: 建站之星IIS配置教程:代码生成技巧与站点搭建指南  西安大型网站制作公司,西安招聘网站最好的是哪个?  定制建站是什么?如何实现个性化需求?  小说建站VPS选用指南:性能对比、配置优化与建站方案解析  云南网站制作公司有哪些,云南最好的招聘网站是哪个?  如何配置支付宝与微信支付功能?  香港服务器租用费用高吗?如何避免常见误区?  如何选择建站程序?包含哪些必备功能与类型?  建站主机是否属于云主机类型?  网站好制作吗知乎,网站开发好学吗?有什么技巧?  如何在建站主机中优化服务器配置?  浙江网站制作公司有哪些,浙江栢塑信息技术有限公司定制网站做的怎么样?  ppt在线制作免费网站推荐,有什么下载免费的ppt模板网站?  交易网站制作流程,我想开通一个网站,注册一个交易网址,需要那些手续?  如何在IIS7上新建站点并设置安全权限?  公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?  如何用VPS主机快速搭建个人网站?  php条件判断怎么写_ifelse和switchcase的使用区别【对比】  成都网站制作价格表,现在成都广电的单独网络宽带有多少的,资费是什么情况呢?  想学网站制作怎么学,建立一个网站要花费多少?  太原网站制作公司有哪些,网约车营运证查询官网?  沈阳个人网站制作公司,哪个网站能考到沈阳事业编招聘的信息?  如何快速生成凡客建站的专业级图册?  linux top下的 minerd 木马清除方法  Swift开发中switch语句值绑定模式  如何配置WinSCP新建站点的密钥验证步骤?  车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?  如何通过虚拟主机快速搭建个人网站?  建站之星在线客服如何快速接入解答?  c# F# 的 MailboxProcessor 和 C# 的 Actor 模型  免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?  如何快速查询域名建站关键信息?  如何在Windows 2008云服务器安全搭建网站?  高防服务器租用指南:配置选择与快速部署攻略  建站之星多图banner生成与模板自定义指南  建站主机类型有哪些?如何正确选型  大型企业网站制作流程,做网站需要注册公司吗?  猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?  在线ppt制作网站有哪些,请推荐几个好的课件下载的网站?  湖北网站制作公司有哪些,湖北清能集团官网?  网站海报制作教学视频教程,有什么免费的高清可商用图片网站,用于海报设计?  Java解压缩zip - 解压缩多个文件或文件夹实例  如何快速生成可下载的建站源码工具?  我的世界制作壁纸网站下载,手机怎么换我的世界壁纸?  免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?  整蛊网站制作软件,手机不停的收到各种网站的验证码短信,是手机病毒还是人为恶搞?有这种手机病毒吗?  如何通过西部数码建站助手快速创建专业网站?  红河网站制作公司,红河事业单位身份证如何上传?  免费ppt制作网站,有没有值得推荐的免费PPT网站?  如何设置并定期更换建站之星安全管理员密码? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。