express-generator express 调用多核CPU

来源:互联网 发布:举报网络电子邮箱地址 编辑:程序博客网 时间:2024/06/11 18:08

最近开始接触Node.js, 这里分享一下如何在express 中调用多核cpu。

  • 通过npm 安装 express-gnerator
  • 在express-generator中找到bin/www文件

- 代码如下

代码块

代码块来自express-generator生成的bin/www文件代码块,例如:

#!/usr/bin/env node/** * Module dependencies. */var app = require('../app');var debug = require('debug')('cjproj:server');var http = require('http');const cluster = require('cluster');const numCPUs = require('os').cpus().length;  //cpu内核数/** * Get port from environment and store in Express. */var port = normalizePort(process.env.PORT || '1130');app.set('port', port);/** * Create HTTP server. */if (cluster.isMaster) {  // Fork workers.   for (var i = 0; i < numCPUs; i++) {    cluster.fork();  //通过cpu内核数生成子进程  }  cluster.on('exit', (worker, code, signal) => {    console.log(`worker ${worker.process.pid} died`);  });} else {  // Workers can share any TCP connection  // In this case it is an HTTP server  var server = http.createServer(app);  server.listen(port);  //同时监听port端口  server.on('error', onError);   server.on('listening', onListening);}/** * Listen on provided port, on all network interfaces. *//** * Normalize a port into a number, string, or false. */function normalizePort(val) {  var port = parseInt(val, 10);  if (isNaN(port)) {    // named pipe    return val;  }  if (port >= 0) {    // port number    return port;  }  return false;}/** * Event listener for HTTP server "error" event. */function onError(error) {  if (error.syscall !== 'listen') {    throw error;  }  var bind = typeof port === 'string'    ? 'Pipe ' + port    : 'Port ' + port;  // handle specific listen errors with friendly messages  switch (error.code) {    case 'EACCES':      console.error(bind + ' requires elevated privileges');      process.exit(1);      break;    case 'EADDRINUSE':      console.error(bind + ' is already in use');      process.exit(1);      break;    default:      throw error;  }}/** * Event listener for HTTP server "listening" event. */function onListening() {  var addr = server.address();  var bind = typeof addr === 'string'    ? 'pipe ' + addr    : 'port ' + addr.port;  debug('Listening on ' + bind);}

如此,便是实现了CPU多核的共用,在实现上都比较简单。

1 0
原创粉丝点击