node.js http/s throttler
JavaScript
Switch branches/tags
Nothing to show
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
bin
exapmles
lib
test
.gitignore
Makefile
README.md
index.js
package.json

README.md

node-throttler

node-throttler is a HTTP traffic throttler.

Installation

npm install node-throttler

Overview

node-throttler is built on top of node-http-proxy. It provides following features.

  • throttles traffic by setting a maximum request rate threshold
  • throttles traffic by setting a maximum response time threshold
  • applies different throttle rates to different URL patterns

Usage

  • Starts node-throttler
proxy --config <config_file> --log <log_level>

where config is a JSON configuration file and log defines the logging level.

  • Runs tests
make test
  • Generates JS documents
make docs

Configuration

The configuration file is itself a JSON object consists of following fields.

  • local_port
    the port on which the throttler will listen

  • remote_host
    the host of the remote service to be throttled

  • remote_port
    the port of the remote service to be throttled

  • throttle_type
    either rps or averesp

  • throttle_key_config
    defines how the throttle rate key is calculated from the request object. If absent, a constant value is used which means the same threshold value will be applied to all requests

  • throttle_threshold_config
    defines how the threshold value is calculated for a request. If it is a constant number, then the value will be applied to all requests

  • max_throttle_time
    defines the maximum throttle time allowed.

Following fields only apply to rps style

  • max_queue_len
    maximum number of requests can be queued before further requests are rejected

Following fields only apply to averesp style

  • max_sample_age
    the oldest sample that can be used to compute average response time

  • min_sample_size
    the minimum sampel size required to compute average response time

  • max_sample_size
    the maximum sampel size required to compute average response time

License

MIT License