Socket
Socket
Sign inDemoInstall

@express-rate-limit/cluster-memory-store

Package Overview
Dependencies
68
Maintainers
2
Versions
3
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    @express-rate-limit/cluster-memory-store

A memory store for the express-rate-limit middleware for use with node:cluster.


Version published
Weekly downloads
31
increased by93.75%
Maintainers
2
Install size
87.7 kB
Created
Weekly downloads
 

Changelog

Source

0.2.0

Changed

  • Increased initial setup timeout from 1 second to 10 seconds, preventing errors in some cases

Added

  • debug logging, enable by setting the environment property DEBUG=cluster-memory-store:* or DEBUG=*

Readme

Source

cluster-memory-store

tests npm version npm downloads

A memory store for the express-rate-limit middleware made for use with the node.js cluster module.

Installation

npm install @express-rate-limit/cluster-memory-store

(Alternate installation methods - pnpm, yarn, Github Releases, etc.)

Usage

This package requires you to use Node 16 or above.

In the cluster primary:

import { ClusterMemoryStorePrimary } from '@express-rate-limit/cluster-memory-store'

const rateLimiterStore = new ClusterMemoryStorePrimary()
rateLimiterStore.init()

In each cluster worker:

import { rateLimit } from 'express-rate-limit'
import { ClusterMemoryStoreWorker } from 'cluster-memory-store'

const limiter = rateLimit({
	store: new ClusterMemoryStoreWorker(),
	/* ...*/
})

app.use(limiter)

See the example/ folder for a complete, working example.

Configuration

ClusterMemoryStoreWorker takes an optional configuration object with the following options:

prefix

string

When applying multiple rate limits (e.g. a global limit and a more strict limit for a specific endpoint), set this to a unique value on each to prevent double-counting of visits.

Usage with PM2, gatling, and other process managers

Because this store requires code execution in the primary process, it doesn't work with process managers that need full control of the primary process, including PM2 when in cluster mode.

PM2

To work with PM2, use the following configuration:

instances: 1,
exec_mode: 'fork',

And then edit your main JS file to include the clustering code, similar to this example.

This looses some of the benefits of using PM2, because it can no longer directly manage worker processes.

Gatling

Gatling is not currently compatibile with cluster-memory-store.

Issues and Contributing

If you encounter a bug or want to see something added/changed, please go ahead and open an issue! If you need help with something, feel free to start a discussion!

If you wish to contribute to the library, thanks! First, please read the contributing guide. Then you can pick up any issue and fix/implement it!

License

MIT © Nathan Friedly and Vedant K

Keywords

FAQs

Last updated on 07 Dec 2023

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc