strict-agent

1.1.0 • Public • Published

Build Status NPM Version

strict-http-agent

Node.js HTTP Agent with strict queued requests limit

Main goal is to prevent this scenario:

Node process sending requests to some slow service. By default after reaching maxSockets, new requests are coming into unlimited queue (javascript array). There are timeouts for requests which are in use, but not for those in queue. After time there will be huge queue in memory. This module prevents this situation by limiting queue size (fast way) and/or ttl for queues requests (slower).

Requires Node.js>=0.10 or io.js

Usage

HTTP get example:

var strictAgent = require("strict-http-agent");
...
var myAgent = new strictAgent({ maxSockets: 10, queueLimit: 100000, queueTTL: 1000 });
 
var options = {
    host: 'localhost',
    port: 8000,
    path: '/',
    agent: myAgent
};
 
var req = http.get(options, function(res) {
        res.pipe( process.stdout );
    }).on('error', function(e) {
        ...
    });

queueLimit

Specifies max number of requests in queue

queueTTL

Specified max ttl for queued requests

Testing

npm test

Load testing

Requirements:

Running tests:

  • In load_tests folder run vagrant up. It will download VM, install all requirements.
  • In load_tests folder you can change siege testing params in run.sh and .siegerc after that just run ./run.sh. Every test will run on reloaded VM. For lite run use run-lite.sh to not reload VM every time.
  • After all tests results will be in run_log in csv format.

Play around

  • In tools folder there are simple http server catcher.js and simple implementation of requests: demo.js.

Package Sidebar

Install

npm i strict-agent

Weekly Downloads

0

Version

1.1.0

License

MIT

Last publish

Collaborators

  • michae1