https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_b964594d3d957944241961017b9eb19bf02834de44cce93d8e67dd306852dbe346167181e455e33d5268ea01d973d77bb056848546f31794f31a4c31a9da5aa3.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_09f62869dbd00446535ebe8e270406331e6f0ae459deba58094caeadc22d58825ffc99f8c217b496ec112cbb1da8b662d77b0f52eae24cc5631f95695e40d87b.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_e6b7e0bf68aa4a61d5c6a0065ec42e38a0cc53e39a4fbee057b72d4b2297b37c01e716e1e61bac7f240b5a0edbb178d37b62f7ed4ea4ea3d10e46dbe7429f326.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_bfff9e63e857e9ee612e292d4a6edf3ced64d6a756925c953a9d8f77845ff601eca64d73dfa48756b1a9f4a4d6de6127a273bcde16ddeb71a22383460f4e94b0.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_f4dd7e1d73ae5eda35ed5ad6aa965b612dbf483ece3ca50c1e8e30ad8dff1c66a160ed75e958e2db399661d229874783e0834ad813a479437035666b8e9e3386.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_4fce0769137d4cd096989b0349bc3c2bbfca79ac311fdf714c41ab24d87551c7b49b756c8a8de090b0714a0ad0560e49fa532ba5a88875ea4afd78efac464df6.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_85cec8b07d60426b11040e471babca0d2f9c8dc87a9b56e06cad39828f7f67179e29609100f282a574872c9a93fb635b25416300eb4c97bc5a653d00cf6f8dbf.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_6768e5a27d4d357347338621c0d20bd269b126d30eec796193390f2f530fbaea60af84130c46f9786114be65149e661e87d55c339219c90aa76396d7e5b734ef.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_2acd6bdff3b680341e8c727da5169a647123eb8fd0a90253161b4c3af272c15d293bf9bb217008bb13f84d1910b0e166798001f8603b6c026d5c20a76c41d47c.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_65a5f5c596ee2f02e696ad069e6e0b9df4800a012c1b63cde1a43c399ae3dfd873c289ffa4ecb6aa04f63cf623d93f39d4d4ed731b56e8b6e234b106cdc36741.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_268c9bba6ba649318f0da28c37b09a9bbfa371210f9b6b52faa7fd8ae94abf6b3c3bfeb5df5705c93495ce1152ca58aeabc435d6c6c1bd959025165c3f50e086.js
  • Skip to main content
  • Skip to primary sidebar
  • Skip to footer
  • Home
  • Featured
    • Advanced Python Topics
    • AWS Learning Roadmap
    • JWT Complete Guide
    • Git CheatSheet
  • Explore
    • Programming
    • Development
      • microservices
      • Front End
    • Database
    • DevOps
    • Productivity
    • Tutorial Series
      • C# LinQ Tutorials
      • PHP Tutorials
  • Dev Tools
    • JSON Formatter
    • Diff Checker
    • JWT Decoder
    • JWT Generator
    • Base64 Converter
    • Data Format Converter
    • QR Code Generator
    • Javascript Minifier
    • CSS Minifier
    • Text Analyzer
  • About
  • Contact
CodeSamplez.com

CodeSamplez.com

Programming And Development Resources

You are here: Home / Development / NodeJS Cluster: The Ultimate Guide to Scaling Your Applications

NodeJS Cluster: The Ultimate Guide to Scaling Your Applications

Updated May 4, 2025 by Rana Ahsan 2 Comments ⏰ 7 minutes

Nodejs Cluster

Are you running NodeJS applications that struggle under heavy traffic? I’ve been there too. After years of working with NodeJS in production environments, I’ve discovered that the cluster module is an absolute game-changer for scaling applications. In this comprehensive guide, I’ll walk you through everything you need to know about NodeJS clustering to take your applications to the next level.

The Single-Thread Limitation

If you’ve been using NodeJS for a while, you already know this painful truth: NodeJS runs on a single thread by default. This means your entire application logic runs on just one thread regardless of how much traffic comes in. When that thread is busy processing one request, any new incoming requests must wait their turn.

Sounds terrifying, right?

Actually, it’s not as bad as it seems. NodeJS uses an event-driven, non-blocking I/O model that works surprisingly well for most applications. The key rule is simple: keep CPU-intensive operations to a minimum. Any heavy processing should be offloaded elsewhere.

But what happens when your application faces massive traffic with hundreds or thousands of requests per second? That single thread becomes a bottleneck, preventing your application from scaling effectively. Your users experience slower response times, and your business suffers.

Enter NodeJS Cluster: The Performance Multiplier

Here’s where NodeJS Cluster module steps in to save the day. While NodeJS doesn’t directly support creating multiple threads within a single process, it does provide a robust facility to create multiple processes that can all bind to the same server port and handle requests independently.

The cluster module implements this multi-process architecture beautifully, following a master-worker pattern where:

  • The master process manages worker processes
  • Worker processes handle the actual requests
  • All processes share the same server port

This approach maximizes your application’s performance by utilizing all available CPU cores on your server.

Creating Your First NodeJS Cluster: A Simple Example

Let’s start with a basic example to understand how clustering works:

const http = require("http");
const cluster = require('cluster');

if (cluster.isMaster) {
  // This code runs in the master process
  const worker = cluster.fork();
  console.log(`Master process ${process.pid} is running`);
} else {
  // This code runs in worker processes
  http.createServer((req, res) => {
    res.writeHead(200);
    res.end("Hello World from Worker");
  }).listen(8000);
  
  console.log(`Worker process ${process.pid} started`);
}Code language: JavaScript (javascript)

In this example, we first check if the current process is the master using cluster.isMaster. If true, we create a new worker process using cluster.fork(). If not (meaning we’re in a worker process), we create an HTTP server that listens on port 8000.

The result? Two processes running your application—one master and one worker—with the worker handling all HTTP requests.

Scaling Up: Creating Multiple Workers

Now let’s take it further by creating multiple worker processes to harness the power of your multi-core processor truly:

const http = require("http");
const cluster = require('cluster');
const numCPUs = require('os').cpus().length;

if (cluster.isMaster) {
  console.log(`Master process ${process.pid} is running`);
  
  // Fork workers equal to CPU cores
  for (let i = 0; i < numCPUs; i++) {
    cluster.fork();
  }
  
  // Log when a worker dies
  cluster.on('exit', (worker, code, signal) => {
    console.log(`Worker ${worker.process.pid} died`);
    // Replace the dead worker
    cluster.fork();
  });
} else {
  // Workers share the same server port
  http.createServer((req, res) => {
    res.writeHead(200);
    res.end(`Hello from worker ${process.pid}`);
  }).listen(8000);
  
  console.log(`Worker ${process.pid} started`);
}Code language: JavaScript (javascript)

This improved version creates worker processes equal to the number of CPU cores available on your machine. When a worker crashes, the master process automatically spawns a new one to replace it, ensuring your application maintains consistent availability.

Advanced Fault Tolerance: Keeping Your App Running

In production environments, application stability is crucial. Let’s enhance our cluster implementation with more robust fault tolerance:

const http = require("http");
const cluster = require('cluster');
const numCPUs = require('os').cpus().length;

if (cluster.isMaster) {
  console.log(`Master ${process.pid} is running`);
  
  // Store workers
  const workers = [];
  
  // Fork workers
  for (let i = 0; i < numCPUs; i++) {
    workers.push(cluster.fork());
  }
  
  // Handle worker crashes
  cluster.on('exit', (worker, code, signal) => {
    console.log(`Worker ${worker.process.pid} died with code: ${code}`);
    
    // Don't respawn if shutdown is intentional
    if (code !== 0 && !worker.exitedAfterDisconnect) {
      console.log('Starting a new worker');
      workers.push(cluster.fork());
    }
  });
  
  // Handle master termination
  process.on('SIGINT', () => {
    console.log('Master shutting down, killing workers');
    
    for (const worker of workers) {
      worker.kill();
    }
    
    // Exit after all workers are killed
    process.exit(0);
  });
} else {
  // Workers handle requests
  http.createServer((req, res) => {
    res.writeHead(200);
    res.end(`Hello from worker ${process.pid}`);
  }).listen(8000);
  
  console.log(`Worker ${process.pid} started`);
}Code language: JavaScript (javascript)

This implementation adds several important improvements:

  1. We track all worker processes in an array
  2. We only respawn workers that die unexpectedly (not during intentional shutdowns)
  3. We implement proper shutdown handling to terminate all workers cleanly when the master process exits

Performance Considerations: How Many Workers Should You Create?

A common mistake is creating too many worker processes, thinking more is always better. In reality, the optimal number depends on your server’s CPU resources.

The general rule of thumb is:

  • For CPU-bound applications: Use N workers where N equals the number of CPU cores
  • For I/O-bound applications: Use N × 2 workers where N equals the number of CPU cores

Exceeding these numbers often leads to diminishing returns or even decreased performance due to context switching overhead. Remember, each worker is a complete NodeJS process with its own memory footprint!

Real-World Implementation: Express.js with Cluster

Let’s see how to implement clustering with Express.js, one of the most popular NodeJS frameworks:

const express = require('express');
const cluster = require('cluster');
const numCPUs = require('os').cpus().length;

if (cluster.isMaster) {
  console.log(`Master ${process.pid} is running`);
  
  // Fork workers
  for (let i = 0; i < numCPUs; i++) {
    cluster.fork();
  }
  
  cluster.on('exit', (worker, code, signal) => {
    console.log(`Worker ${worker.process.pid} died`);
    // Replace the dead worker
    cluster.fork();
  });
} else {
  // Workers run the Express app
  const app = express();
  
  app.get('/', (req, res) => {
    res.send(`Hello from worker ${process.pid}`);
  });
  
  app.listen(3000, () => {
    console.log(`Worker ${process.pid} started`);
  });
}Code language: JavaScript (javascript)

This seamlessly integrates the power of clustering with the simplicity of Express.js, giving you the best of both worlds.

Tip 💡: If you want to have your own clustering logic, despite being outdated, clustered-node code base might be a good starter guide/reference

Modern Alternatives: PM2 and Kubernetes

While the native cluster module is powerful, there are modern alternatives that simplify deployment and management:

PM2

PM2 is a production process manager that handles clustering automatically:

// app.js - Your regular Express app without clustering code
const express = require('express');
const app = express();

app.get('/', (req, res) => {
  res.send('Hello World!');
});

app.listen(3000, () => {
  console.log('App listening on port 3000');
});Code language: PHP (php)

Then run it with PM2:

bashpm2 start app.js -i max

The -i max flag tells PM2 to create as many worker processes as there are CPU cores.

Kubernetes

For container-based deployments, Kubernetes provides horizontal scaling:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nodejs-app
spec:
  replicas: 3  # Create 3 instances of your Node.js container
  selector:
    matchLabels:
      app: nodejs-app
  template:
    metadata:
      labels:
        app: nodejs-app
    spec:
      containers:
      - name: nodejs-app
        image: your-nodejs-app:latest
        ports:
        - containerPort: 3000Code language: PHP (php)

This creates multiple containers of your application, with Kubernetes handling the load balancing.

After years of implementing clusters in production, I’ve identified these critical best practices:

  1. Keep the master process lean: The master should mainly manage worker processes. Heavy processing in the master risks crashing all workers.
  2. Implement graceful shutdown: Always handle termination signals to close connections properly and prevent data loss.
  3. Use sticky sessions: For applications requiring session persistence, implement sticky sessions so a user’s requests always go to the same worker.
  4. Monitor memory usage: Each worker has its own memory space. Monitor overall memory consumption to prevent server overload.
  5. Consider stateless design: Design your application to be stateless where possible, making scaling and worker replacement seamless.
  6. Implement proper logging: Centralize logs from all workers to make debugging easier.

Conclusion: Scale Without Limits

NodeJS clustering is an incredibly powerful technique that transforms the single-threaded limitation into a scalable, multi-core powerhouse. By implementing the patterns and practices described in this guide, you can dramatically improve your application’s performance, reliability, and scalability.

Remember, effective scaling isn’t about using every CPU cycle available—it’s about intelligently distributing your workload across available resources while maintaining stability and reliability.

Have you implemented clustering in your NodeJS applications? Share your experiences in the comments below!

Happy coding! 🚀

References:

  • NodeJS Official Documentation
  • PM2
  • Kubernetes

Share if liked!

  • Click to share on Facebook (Opens in new window) Facebook
  • Click to share on X (Opens in new window) X
  • Click to share on LinkedIn (Opens in new window) LinkedIn
  • Click to share on Pinterest (Opens in new window) Pinterest
  • Click to share on Reddit (Opens in new window) Reddit
  • Click to share on Tumblr (Opens in new window) Tumblr
  • Click to share on Pocket (Opens in new window) Pocket

You may also like


Discover more from CodeSamplez.com

Subscribe to get the latest posts sent to your email.

First Published On: December 13, 2014 Filed Under: Development Tagged With: nodejs, scalability

About Rana Ahsan

Rana Ahsan is a seasoned software engineer and technology leader specialized in distributed systems and software architecture. With a Master’s in Software Engineering from Concordia University, his experience spans leading scalable architecture at Coursera and TopHat, contributing to open-source projects. This blog, CodeSamplez.com, showcases his passion for sharing practical insights on programming and distributed systems concepts and help educate others.
Github | X | LinkedIn

Reader Interactions

Comments

  1. romain says

    March 26, 2015 at 5:57 PM

    Hi Ali! Nice writing, i’m wondering, what if cluster worker code is bad at initialization, if master respawns children immediately, they will also die, filling up your ram, and consuming all your CPU by spawning processes endlessly ( tested on my laptop. ) i’m developper here at dropncast interactive wall startup, and i’m verry concerned by this behaviour on app deployment. Could there maybe be a way to revert code if children keep dying immediately?

    Reply
    • Md Ali Ahsan Rana says

      March 28, 2015 at 12:08 AM

      Hi Romain, an worker will be restarted only if if exited completely, so there shouldn’t be case of filling up memory. Instead, it suppose to help in case of memory leak issues. However, I am curious, if it still happens, that might be due to some kind of bug. As you are getting such behaviors, can you please share a code snippet so that I can have a look. However, may be adding an additional config variable to disable re-spawning is also a good idea in general way. I will keep that in mind and implement in future release of clustered-node library. Thanks.

      Reply

Leave a ReplyCancel reply

Primary Sidebar

  • Facebook
  • X
  • Pinterest
  • Tumblr

Subscribe via Email

Top Picks

python local environment setup

Python Local Development Environment: Complete Setup Guide

In-Depth JWT Tutorial Guide For Beginners

JSON Web Tokens (JWT): A Complete In-Depth Beginners Tutorial

The Ultimate Git Commands CheatSheet

Git Commands Cheatsheet: The Ultimate Git Reference

web development architecture case studies

Web Development Architecture Case Studies: Lessons From Titans

static website deployment s3 cloudfront

Host Static Website With AWS S3 And CloudFront – Step By Step

Featured Dev Tools

  • JSON Formatter
  • JWT Decoder

Recently Published

python file handling

Python File Handling: A Beginner’s Complete Guide

service worker best practices

Service Worker Best Practices: Security & Debugging Guide

advanced service worker features

Advanced Service Worker Features: Push Beyond the Basics

service worker framework integration

Service Workers in React: Framework Integration Guide

service worker caching strategies

Service Worker Caching Strategies: Performance & Offline Apps

Footer

Subscribe via Email

Follow Us

  • Facebook
  • X
  • Pinterest
  • Tumblr

Demos

  • Demo.CodeSamplez.com

Explore By Topics

Python | AWS | PHP | C# | Javascript

Copyright © 2025

https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_f3ad67bc306d706e0b5fb6529e58e01165b7f245b50542fcf7f0dd5433ad3f941469fbbe078bd8b912dff51da92c16f7ad8f88e4060bbddd140999c7374cfe5c.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_c402e38f1879c18090377fb6b73b15ac158be453ecda3a54456494fe8aba42b990c293bae5424e5643d52515ffc2067e0819995be8d07d5bba9107a96780775c.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_ffc3511227531cc335353c54c3cbbaa11d0b80e5cb117478e144436c13cd05495b67af2e8950480ed54dbdabcdcef497c90fdb9814e88fe5978e1d56ce09f2cf.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_d57da9abfef16337e5bc44c4fc6488de258896ce8a4d42e1b53467f701a60ad499eb48d8ae790779e6b4b29bd016713138cd7ba352bce5724e2d3fe05d638b27.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_d286e50977f467ebee8fecdcb44e6a6b9a29f2b911dfe58b30ff4f0545aa2b19bca73246e23de9a6d2380bf20e6b8a001b5ba2051042d104c6d411b474fd3368.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_556272a5f9c5e1b26dcf93c48dd6c60d2107db888f97b70498f312c9052331e10005db30e1259f325d650689883af8e7250f282b512037503c7b7dcf03bef034.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_dccc492dbbfdac33d1411f9df909e849c7268fcf99b43007f278cde3a0adc0ae00e8cae5ec81cf255b9a6eae74e239ba1fa935572af77173219cb081f7d2327d.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_00bacf9e36181aac2b666d110cd9d82257f846766e7041b2d7b3c909b458982931ccc9b203e37098fbdfcf43ca359cf04e3824a724a6789fc204196d3a72ad29.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_c1c18b8baf8ed2aa84a8022e80b5422016646101cc3549c023473f24ad731189d3f4e279527a58a60bef61e6f749d51f280c52a82dfdab5075e6bc20bf21b240.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_68b6d1949e90b6a37c5195ae17874e7c2455352144f28a76be0f68f7a941e6d664fa3c931485f2c5463521acdac05ff6642f0c94fa557a087caa9478d162f085.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_bb8058a9e234a7ffaa98891b1df7f6b8e67410e6984568b151daa05113b8c7f89d7b5918ae73f020998a16f7f5a087a13d6a9a5e5d7c301e2ca12fd9d1f8d177.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_647fb67570c6108fb10ae6785a1abdbecac99ffcf80351d0bef17c3cf783dce497b1895fcdaae997dacc72c359fbfb128cc1540dd7df56deb4961e1cd4b22636.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_f7a298a0f1f754623fe3b30f6910ce2c1373f715450750bd7a391571812b00df1917e2be90df6c4efc54dbdfda8616278a574dea02ba2c7a31992768df8db334.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_df30604d5842ef29888c3c1881220dc6d3f8854666d94f0680c5f38aa643c5fb79b10eb9f10998d8856eb24ca265783195937434fd6c2bb8e4846df0277a7fb7.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_f17fe6fb0993f1703181d7ae9e9ea570f3d33a43afd6f2a4567daa1a6745698c7b8193dc72d50991d2dd87cd3dcf663959206607d193a9b57926d061a1f50aef.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_945dcbab2c2a131f3c90f4fb91776b76066d589f84fb55bff25cd5d79a56218000616bfca1f0af9a74f32348693707af49e8fe624de8aa34f1e1c5b6a25709cf.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_65820d252e1b93596de6697fd5f02483f3e2524a0696c7d698b64745edb32bf5831a90e556842f5f88c8209766cc78ca3a41cf783d20236a9f90d4a7ea7b3e72.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_7286884797a1210857e2a36f8ab46604b0034b6abf512380447a5763c873db6a72b8547f660053de0ea69faef1eb64878f39ff4b0ea86c963efab95764a3bf5b.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_cbcf6c279ac6c6a25ae138bf964e64a5fd90d22dcdf8a53b6fe7b72cefa51063bfb0181a6e50dd2acdcae2795619887d1d83b10461e44e5103be756f2588d837.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_47965bc586b95810c925b9df3314e0c9a5cd121e70ca0831f87df0bc034695de4f83ecf2def86f737e14614ee138794473cf32cd3082a5d38db9dec0c1f266fa.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_12aa201cea075846d266536aa222d64d4088b851d87f55dac5e611b77add6826c8ebc6e82650fcd1a9e88a05a0072dedd195719c5f64cd4580a0acd8aee05d92.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_80a4a4c808f46b20177fec8ee1a931010e5d14047c467a7f976cb5b2529b569eeb61558804f2f1a2d2a2347a1e2041500c1b275b1b4c31bbb4b36d8b4183b2b6.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_7631dbfa08fcf8a5082220f1a0d3066dbaceba143933f621f9ab340423d9042a80d467513bda370fd30b0f7206f2c33be99014b5e1fe61a45fc3189653c00ee8.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_d87ea86dd0e7ecdd5fe7a5bb67becf943e57c3add866b456034d51663d099031bd563e12f61fdccc044969adf938a8584ed22ccd401ab8b669e20e4f92fb54e8.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_35311c3d71a3605fad4e1d6b50f3911311cdcc46418bdf56d6d0308a75a69585269ee7582a335e29989adf308fa1a81a10a2c2d4e257e9d680447a4996f6269e.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_f4fc182ef03c12e9dcadd6febc3dbaa4a29134469057ca9e8ec0be2f2de29a494514ff4b59798e74debf26f78b2df2b3e2665c69b77035761fb463b783202915.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_85c0f2769456e60153b0fd8364b82a035da53384f62de342d9bdca806f3f1ea56486919a00497a18d457949c82bf8bfacc4423fc332074ddf71a49a8fe628fff.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_1b7e49e98f5960d71636812e807832cc98a24f48bc493652ddb2f9c4ce08bc89a8fd5d9550a8e2887d1d8887ce02924a878361c296d21ceba18a56f3ace130bd.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_09eecfdd96206ed13830b4b93cfb2cc75cd38083671a34194437b5734b5bb38712209dc335b07e3266ceb3c3a44a155b9bbe5f3e0e1105b19dd45d3def76f020.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_4c089fbdb88e3b624a6f884d3ba1bf606f003bfcd3742376d0d353cd62181dc663aa3811a56361c3100de488fc4d6595a50de2b26f058921ba74f5f2c1b5be00.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_897ff6ac314c5f5e0f496c6af624bd9abf296a02cb5aeb850b9220b6dc3ce2fc4004cb02ed8b59d59d4b9c9d90f050d6eebc1d08ecaebab2f671f7d9367e6410.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_67d1e619e71d36ae00ddcf85ee18628bb4eb64fcb3d6119b463e75cb987013420a21136d19cd03e6634ccc01cfa9af4a357930e4cf6900953b7812efb4f249fb.js