Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/nfriedly/node-gatling
A simple node.js script that turns a single-threaded server into a multi-threaded server with automatic restarting.
https://github.com/nfriedly/node-gatling
Last synced: 4 days ago
JSON representation
A simple node.js script that turns a single-threaded server into a multi-threaded server with automatic restarting.
- Host: GitHub
- URL: https://github.com/nfriedly/node-gatling
- Owner: nfriedly
- Created: 2013-12-06T22:20:42.000Z (almost 11 years ago)
- Default Branch: master
- Last Pushed: 2021-03-28T12:12:43.000Z (over 3 years ago)
- Last Synced: 2024-11-02T10:22:48.375Z (11 days ago)
- Language: JavaScript
- Size: 1.21 MB
- Stars: 8
- Watchers: 3
- Forks: 2
- Open Issues: 2
-
Metadata Files:
- Readme: readme.md
Awesome Lists containing this project
README
Gatling
=======
A simple node.js script that turns a simple single-process server into a multi-process [cluster]'d server with automatic restarting.Plays nice with Express and similar libraries.
[![Build Status](https://travis-ci.org/nfriedly/node-gatling.png?branch=master)](https://travis-ci.org/nfriedly/node-gatling)
Installation
------------npm install --save gatlin
Recommended Setup
-----------------Instead of calling `node server.js` call `npx gatling server.js`. It will start one manager process + one worker process for each logical CPU core.
### `package.json`
Add a `scripts.start` entry like so:
```js
{
//...
"scripts": {
"start": "gatling app.js"
}
}
```Legacy Setup
------------This was the only option in v1, and is preserved for backwards-compatibility.
Instead of starting the server, simply export the handler function and then call gatlin with the path to your `server.js` or `app.js`.
(The reason this was needed is that Gatlin ran each request inside a [domain](https://nodejs.org/api/domain.html) in v1. It prevented errors in one request from interfering with any other requests, but the API has since been deprecated.)
### Express
Just change
```js
app.listen(port)
```
to```js
module.exports = app;
```### HTTP
Your app should export the function that gets passed to `http.createServer` and not create the server itself.
For example, say your `app.js` looks like this:
```js
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
}).listen(1337);
```
Change it to this:```js
module.exports = function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
});
```Usage
-----To start your server, run `npm start`. Or, to call gatling directly, run `./node_modules/bin/gatling app.js`
API
---The following command line options are accepted
`-q`, `--quiet`: silences all non-error output
`--processes 2`: Set the number of worker processes. Defaults to one per CPU core.
`-p 1234`, `--port 1234`: defaults to the `PORT` or `VCAP_APP_PORT` (bluemix) environment properties, or 8080 if not set. (Only applies when gatling starts the server rathern than your app.)# Changelog
# v2.0.0
* Removed Domain support
* Removed newrellic support
* Added support for regular app.js / server.js files that start call `listen()` themselves
* Bumped minimum Node.js version to 6.0.0[cluster]: https://nodejs.org/api/cluster.html
[domain]: https://nodejs.org/api/domain.html