Best Online Tutorials

SQL Tutorial

Free SQL Tutorial

SQL Interview Questions

SQL Practice Questions

SQL Tips & Tricks

SQL Errors

SQL Books

Angular Tutorial

Free Angular Tutorial

Angular Interview Questions

Angular Practice Questions

Angular Tips & Tricks

Angular Errors

Angular Books

Node.js Tutorial

Free Node.js Tutorial

Node.js Interview Questions

Node.js Practice Questions

Node.js Tips & Tricks

Node.js Errors

Node.js Books

React.js Tutorial

Free React.js Tutorial

React.js Interview Questions

React.js Practice Questions

React.js Tips & Tricks

React.js Errors

React.js Books

SSIS Tutorial

Free SSIS Tutorial

SSIS Interview Questions

SSIS Practice Questions

SSIS Tips & Tricks

SSIS Errors

SSIS Books

SEO Tutorial

Free SEO Tutorial

SEO Interview Questions

SEO Practice Questions

SEO Tips & Tricks

SEO Errors

SEO Books

Javascript Tutorial

Free Javascript Tutorial

Javascript Interview Questions

Javascript Practice Questions

Javascript Tips & Tricks

Javascript Errors

Javascript Books

MongoDB Tutorial

Free MongoDB Tutorial

MongoDB Interview Questions

MongoDB Practice Questions

MongoDB Tips & Tricks

MongoDB Errors

MongoDB Books

Next.js Tutorial

Free Next.js Tutorial

Next.js Interview Questions

Next.js Practice Questions

Next.js Tips & Tricks

Next.js Errors

Next.js Books

Node.js - Cluster 

Prashant Surya  |   Nov 19, 2019  |  Views: 10

Description:

Cluster :


  • Cluster in nodejs is a group of work processors.
  • Number of work processors in group is decided by the number of available CPU in OS.
  • - If your system processor is a quad-core processor, then you can start 4 workers
  • Each work processor is started by using cluster.fork() 
  • fork creates the exact clone of process, using the same available port to the master process.
  • same port is being shared by each worker process, due to IPC( Inter Process Communication ) technique.
  • One process is launched on each CPU and can communicate via IPC
  • Each process has it's own memory with it's own Node (v8) instance. Creating tons of them may create memory issues.
  • Great for spawning many HTTP servers that share the same port b/c the master process will multiplexes the requests to the child processes.

Benefits of using cluster:


  • Load balancing
  • Multi process operation
  • Multi Threading (but uses same port)
  • Use of same port
  • Performance increasing up-to 3.2x


var cluster = require('cluster');
var express = require('express');
var numCPUs = require('os').cpus().length;
if (cluster.isMaster) {
    for (var i = 0; i < numCPUs; i++) {
        // Create a worker
        cluster.fork();
    }
} else {
    // Workers share the TCP connection in this server
    var app = express();
    app.get('/', function (req, res) {
        res.send('Hello World!');
    });
    // All workers use this same port
    app.listen(8080);
}

Note:
  • Each worker process is generally a new V8 instance.
  • It may takes 30ms startup time for each and at least 10mb of memory per instance.


cluster.isMaster: 


This is used to check whether the cluster is a master process or the child worker process.


How are requests are divided up between the worker process?


Cluster have their two types of policy for the handling of requests.
  • cluster.SCHED_RR  - Round Robin Policy ( by default, it is set in Linux and OSX )
  • cluster.SCHED_NONE ( by default, it is set in Windows )


How to change the policy manually?


cluster.schedulingPolicy is used to set the policy type you want to set.
Or NODE_CLUSTER_SCHED_POLICY is set in your environment.


Difference between cluster.fork() and child_process.fork()


cluster.fork() - It starts from the beginning (entry) of the module.
child_process.fork() - It starts where its been defined.


child_process.fork() method is a bit lower-level and required arguments like
  • location (file path) of the module as an argument, 
  • current working directory, 
  • user that owns the process, 
  • environment variables...

Comments:
Content Contributor
Prashant Surya

Prashant Surya

Software developer at Uniserve Data Technologies Pvt. Ltd.  |   Noida, Uttar Pradesh, India

I am a software developer, freelancer and trainer working on technologies likes. MEAN stack, MERN Stack, ASP.NET full stack, WebRTC, socket.io ,PWA, SQL, JavaScript, jQuery, HTML, CSS, SEO, responsive UI/UX designing... having 7 years of experience in development in multiple domains like, eCommerce, RTA, capital markets, education, real estate...


Read related articles

Node.js - Modules

Prashant Surya  |   Dec 26, 2019  |  Views: 8

Node.js - Cluster

Prashant Surya  |   Nov 19, 2019  |  Views: 11

Node.js - IPC

Prashant Surya  |   Nov 19, 2019  |  Views: 8

Node.js - OS

Prashant Surya  |   Nov 19, 2019  |  Views: 7

Node.js - Global Objects

Prashant Surya  |   Nov 19, 2019  |  Views: 12

Node.js - Command Line Options

Prashant Surya  |   Nov 19, 2019  |  Views: 15

Node.js - Callbacks

Prashant Surya  |   Nov 19, 2019  |  Views: 10

Node.js - NPM

Prashant Surya  |   Nov 19, 2019  |  Views: 8

Node.js - REPL

Prashant Surya  |   Nov 19, 2019  |  Views: 7

Node.js - Console

Prashant Surya  |   Nov 19, 2019  |  Views: 7

Node.js - First Example

Prashant Surya  |   Nov 19, 2019  |  Views: 11

Node.js - Installation

Prashant Surya  |   Nov 19, 2019  |  Views: 7

Node.js - Introduction

Prashant Surya  |   Nov 19, 2019  |  Views: 14

Node.js - Http

Prashant Surya  |   Nov 19, 2019  |  Views: 10

Node.js - Timer

Prashant Surya  |   Nov 19, 2019  |  Views: 9

Node.js - Crypto

Prashant Surya  |   Nov 19, 2019  |  Views: 9

Node.js - Errors

Prashant Surya  |   Nov 19, 2019  |  Views: 12

Node.js - File System

Prashant Surya  |   Nov 19, 2019  |  Views: 8

Node.js - Http/2

Prashant Surya  |   Nov 19, 2019  |  Views: 8

Node.js - Query String

Prashant Surya  |   Nov 19, 2019  |  Views: 7

Node.js - Async Hooks

Prashant Surya  |   Nov 19, 2019  |  Views: 14

Node.js - Https

Prashant Surya  |   Nov 19, 2019  |  Views: 6

Node.js - String Decoder

Prashant Surya  |   Nov 19, 2019  |  Views: 10

Node.js - DNS

Prashant Surya  |   Nov 19, 2019  |  Views: 6

Node.js - Debugger

Prashant Surya  |   Nov 19, 2019  |  Views: 8

Node.js - TLS/SSL

Prashant Surya  |   Nov 19, 2019  |  Views: 12

Node.js - Child Process

Prashant Surya  |   Nov 19, 2019  |  Views: 12

Node.js - Process

Prashant Surya  |   Nov 19, 2019  |  Views: 6

Node.js - Streams

Prashant Surya  |   Nov 19, 2019  |  Views: 12

Node.js - Net

Prashant Surya  |   Nov 19, 2019  |  Views: 6

Node.js - Crypto

Prashant Surya  |   Nov 19, 2019  |  Views: 11

Node.js - Performance Hooks

Prashant Surya  |   Nov 19, 2019  |  Views: 6

Node.js - Path

Prashant Surya  |   Nov 19, 2019  |  Views: 7

Node.js - StringDecoder

Prashant Surya  |   Nov 19, 2019  |  Views: 16

Node.js - Assertion

Prashant Surya  |   Nov 19, 2019  |  Views: 5

Node.js - Query String

Pooja Goel  |   Nov 19, 2019  |  Views: 4

Node.js - Callbacks

Prashant Surya  |   Nov 19, 2019  |  Views: 14

Node.js - Buffers

Prashant Surya  |   Nov 19, 2019  |  Views: 10

Node.js - Events

Prashant Surya  |   Nov 19, 2019  |  Views: 15

Node.js - ZLIB

Prashant Surya  |   Nov 19, 2019  |  Views: 10

Node.js - TTY

Prashant Surya  |   Nov 19, 2019  |  Views: 11

Node.js - Trace Events

Prashant Surya  |   Nov 19, 2019  |  Views: 5

Node.js - Worker Threads

Prashant Surya  |   Nov 19, 2019  |  Views: 8

Node.js - Web Modules

Prashant Surya  |   Nov 19, 2019  |  Views: 7

Want to sell your software ?-

If you want to sell your readymade software to the genuine clients or businessman, list your software with details and demo links.

  • Sell ERP
  • Sell Website Clones
  • Sell App Clones
  • Sell Readymade Portals
  • Sell Readymade Websites
  • Sell Mobile Apps
  • Sell Window Apps

Clients will find it using our advanced search filter and will contact you directly.

No any charge for the product lsiting.

Do you own a Company ?+

Property.sale

Buy or Sell Commercial Property+

Are you a freelancer ?+

Looking for a job ?+

Are you a Service Provider ?+

Are you a blogger ?+

Do you own an IT Institute ?+



Property.sale