Revisited Concept: High Performance web server w/ Promises
Tags: exploration, opensource, github, node
Published: 2018-03-15 12:43:05

---
title: Revisited Concept: High Performance web server w/ Promises
published: true
tags: Exploration,Open Source Software,GitHub,Node.JS
canonical_url: https://theopensourceu.org/revisited-concept-high-performance-web-server-promises/
---

 ![Revisited Concept: High Performance web server w/ Promises](https://images.unsplash.com/photo-1520764816423-52375cbff016?ixlib=rb-0.3.5&q=80&fm=jpg&crop=entropy&cs=tinysrgb&w=1080&fit=max&ixid=eyJhcHBfaWQiOjExNzczfQ&s=e533e5b4614cdb82fe0651d8ae79a0b0)

[This is a follow up](https://theopensourceu.org/revisited-concept-high-performance-web-server-promises/) to my earlier article: [Concept: High Performance web server w/ Promises](https://theopensourceu.org/concept-high-performance-web-server-w-promises/).

I decided to follow this up for two main reasons. First and foremost, there was an error in the original code I posted and I couldn't remember if that error existed in the code I actually tested with or if it was introduced during my writing of the article. Second, I didn't have any of my detailed data to share and I feel that is relevant to this type of article.

## The Concept

The _TL;DR_ of the concept is: Can we get higher HTTP server throughput (higher RPS) by using a promise even when not needed. That is, no async operation exists.

Please see the [first article for more details](https://theopensourceu.org/concept-high-performance-web-server-w-promises/).

## Methodology

I recreated my project but this time I saved it as [open source](https://github.com/TheOpenSourceU/tOSU-PromiseWebServer-Experiment). It's a basic [WebStorm](https://www.jetbrains.com/webstorm/) express template with [handlebars](https://handlebarsjs.com/) as the view manager. I've modified it to introduce my concept and that looks like:

```
const myData = { title: 'Promise Express' };

/* GET /promise/ */
router.get('/', function(req, res) {
    new Promise(function(resolve, reject) {
        resolve(myData); //setup data
    }).then(function(d) {
        res.render('index', d); //render the view in the 'then'
    });
});
```

I used [Artillery](https://artillery.io/docs/getting-started/) for the load testing aspect. Artillery was run from my desktop computer (not on the server running the express project). Using [Artillery](https://artillery.io/docs/getting-started/), we create the following scenarios:

- 10 users each making 20 GET requests
- 50 users each making 30 GET requests
- 100 users each making 30 GET requests
- 500 users each making 100 GET requests

The exact server details are: [Ubuntu 16.04 LTS](https://theopensourceu.org/tag/linux/) [DigitalOcean Droplets](https://m.do.co/c/0595daf97871), Flexible Droplets - 2 GB 2x vCPUs ($15 a month).

Note: I also did one run on a 1 GB 1x vCPU droplet as well which is documented at the very bottom.

## Summary of Differences

There are a few technical differences from my initial article and this version aside from the depth of content. ( **Format** : _first article_ vs _this article_)

- Promise library: [Pinkie](https://github.com/floatdrop/pinkie-promise) vs [Bluebird](http://bluebirdjs.com/docs/getting-started.html))
- The server: 1x CPU, 1 GB VPS vs 2x CPU, 2 GiB VPS
  - I did check the prev. config though without getting errors.
- Handlebars: No view template engine vs Handlebars

## Results

The results are different than my first article. Basically, it doesn't help but it doesn't hurt...

![Revisited Concept: High Performance web server w/ Promises](https://theopensourceu.org/content/images/2018/03/chart.PNG)

No scenario threw any errors (which was different from my first run as I recall.) _I've made the assumption that this has to do with my promise library of choice; [bluebird is known and written to be very fast](http://bluebirdjs.com/docs/benchmarks.html)_.

# Raw Results

Following are the "_cut and paste_" raw results from Artillery for detailed reference and review. Also, in case I mistyped something into a chart or table.

# 2x vCPU, 2 GiB RAM

## Basic - 10 "Virtual Users", 20 GETs

```
λ artillery quick --count 10 -n 20 http://159.65.99.177:3000/basic
Started phase 0, duration: 1s @ 15:00:41(-0600) 2018-03-06
Report @ 15:00:44(-0600) 2018-03-06
  Scenarios launched: 10
  Scenarios completed: 10
  Requests completed: 200
  RPS sent: 68.49
  Request latency:
    min: 64.3
    max: 139.3
    median: 71.8
    p95: 119.8
    p99: 137.9
  Codes:
    200: 200

All virtual users finished
Summary report @ 15:00:44(-0600) 2018-03-06
  Scenarios launched: 10
  Scenarios completed: 10
  Requests completed: 200
  RPS sent: 68.03
  Request latency:
    min: 64.3
    max: 139.3
    median: 71.8
    p95: 119.8
    p99: 137.9
  Scenario counts:
    0: 10 (100%)
  Codes:
    200: 200
```

## Promise - 10 "Virtual Users", 20 GETs

```
λ artillery quick --count 10 -n 20 http://159.65.99.177:3000/promise
Started phase 0, duration: 1s @ 15:01:44(-0600) 2018-03-06
Report @ 15:01:47(-0600) 2018-03-06
  Scenarios launched: 10
  Scenarios completed: 10
  Requests completed: 200
  RPS sent: 82.64
  Request latency:
    min: 62.3
    max: 144.8
    median: 71.1
    p95: 116.5
    p99: 140.7
  Codes:
    200: 200

All virtual users finished
Summary report @ 15:01:47(-0600) 2018-03-06
  Scenarios launched: 10
  Scenarios completed: 10
  Requests completed: 200
  RPS sent: 82.3
  Request latency:
    min: 62.3
    max: 144.8
    median: 71.1
    p95: 116.5
    p99: 140.7
  Scenario counts:
    0: 10 (100%)
  Codes:
    200: 200
```

## Basic - 50 "Virtual Users", 30 GETs

```
λ artillery quick --count 50 -n 30 http://159.65.99.177:3000/basic
Started phase 0, duration: 1s @ 15:06:18(-0600) 2018-03-06
Report @ 15:06:22(-0600) 2018-03-06
  Scenarios launched: 50
  Scenarios completed: 50
  Requests completed: 1500
  RPS sent: 373.13
  Request latency:
    min: 63
    max: 376.4
    median: 84.5
    p95: 130.4
    p99: 149.2
  Codes:
    200: 1500

All virtual users finished
Summary report @ 15:06:22(-0600) 2018-03-06
  Scenarios launched: 50
  Scenarios completed: 50
  Requests completed: 1500
  RPS sent: 372.21
  Request latency:
    min: 63
    max: 376.4
    median: 84.5
    p95: 130.4
    p99: 149.2
  Scenario counts:
    0: 50 (100%)
  Codes:
    200: 1500
```

## Promise - 50 "Virtual Users", 30 GETs

```
λ artillery quick --count 50 -n 30 http://159.65.99.177:3000/promise
Started phase 0, duration: 1s @ 15:06:57(-0600) 2018-03-06
Report @ 15:07:01(-0600) 2018-03-06
  Scenarios launched: 50
  Scenarios completed: 50
  Requests completed: 1500
  RPS sent: 374.06
  Request latency:
    min: 63.2
    max: 360.3
    median: 82.6
    p95: 132.8
    p99: 166
  Codes:
    200: 1500

All virtual users finished
Summary report @ 15:07:01(-0600) 2018-03-06
  Scenarios launched: 50
  Scenarios completed: 50
  Requests completed: 1500
  RPS sent: 372.21
  Request latency:
    min: 63.2
    max: 360.3
    median: 82.6
    p95: 132.8
    p99: 166
  Scenario counts:
    0: 50 (100%)
  Codes:
    200: 1500
```

## Basic - 100 "Virtual Users", 30 GETs

```
λ artillery quick --count 100 -n 30 http://159.65.99.177:3000/basic
Started phase 0, duration: 2s @ 15:11:15(-0600) 2018-03-06
Report @ 15:11:21(-0600) 2018-03-06
  Scenarios launched: 100
  Scenarios completed: 100
  Requests completed: 3000
  RPS sent: 543.48
  Request latency:
    min: 62.3
    max: 220.3
    median: 114
    p95: 155.4
    p99: 174.5
  Codes:
    200: 3000

All virtual users finished
Summary report @ 15:11:21(-0600) 2018-03-06
  Scenarios launched: 100
  Scenarios completed: 100
  Requests completed: 3000
  RPS sent: 541.52
  Request latency:
    min: 62.3
    max: 220.3
    median: 114
    p95: 155.4
    p99: 174.5
  Scenario counts:
    0: 100 (100%)
  Codes:
    200: 3000
```

## Promise - 100 "Virtual Users", 30 GETs

```
λ artillery quick --count 100 -n 30 http://159.65.99.177:3000/promise
Started phase 0, duration: 2s @ 15:12:23(-0600) 2018-03-06
Report @ 15:12:28(-0600) 2018-03-06
  Scenarios launched: 100
  Scenarios completed: 100
  Requests completed: 3000
  RPS sent: 542.5
  Request latency:
    min: 63.6
    max: 240.4
    median: 117.1
    p95: 196.8
    p99: 209.9
  Codes:
    200: 3000

All virtual users finished
Summary report @ 15:12:28(-0600) 2018-03-06
  Scenarios launched: 100
  Scenarios completed: 100
  Requests completed: 3000
  RPS sent: 540.54
  Request latency:
    min: 63.6
    max: 240.4
    median: 117.1
    p95: 196.8
    p99: 209.9
  Scenario counts:
    0: 100 (100%)
  Codes:
    200: 3000
```

## Basic - 200 "Virtual Users", 50 GETs

```
λ artillery quick --count 200 -n 50 http://159.65.99.177:3000/basic
Started phase 0, duration: 4s @ 15:21:01(-0600) 2018-03-06
Report @ 15:21:11(-0600) 2018-03-06
  Scenarios launched: 200
  Scenarios completed: 0
  Requests completed: 5737
  RPS sent: 592.91
  Request latency:
    min: 62.1
    max: 528.2
    median: 272
    p95: 403.4
    p99: 431.9
  Codes:
    200: 5737

Report @ 15:21:17(-0600) 2018-03-06
  Scenarios launched: 0
  Scenarios completed: 200
  Requests completed: 4263
  RPS sent: 735.08
  Request latency:
    min: 66.1
    max: 552.1
    median: 214.4
    p95: 272.9
    p99: 289.2
  Codes:
    200: 4263

All virtual users finished
Summary report @ 15:21:17(-0600) 2018-03-06
  Scenarios launched: 200
  Scenarios completed: 200
  Requests completed: 10000
  RPS sent: 641.03
  Request latency:
    min: 62.1
    max: 552.1
    median: 245.8
    p95: 382.5
    p99: 424.9
  Scenario counts:
    0: 200 (100%)
  Codes:
    200: 10000
```

## Promise - 200 "Virtual Users", 50 GETs

```
λ artillery quick --count 200 -n 50 http://159.65.99.177:3000/promise
Started phase 0, duration: 4s @ 15:22:10(-0600) 2018-03-06
Report @ 15:22:20(-0600) 2018-03-06
  Scenarios launched: 200
  Scenarios completed: 0
  Requests completed: 5664
  RPS sent: 585.81
  Request latency:
    min: 65.7
    max: 468.6
    median: 290.4
    p95: 384.7
    p99: 414.3
  Codes:
    200: 5664

Report @ 15:22:27(-0600) 2018-03-06
  Scenarios launched: 0
  Scenarios completed: 200
  Requests completed: 4336
  RPS sent: 589.17
  Request latency:
    min: 62.7
    max: 433.5
    median: 249.1
    p95: 375.4
    p99: 408.7
  Codes:
    200: 4336

All virtual users finished
Summary report @ 15:22:27(-0600) 2018-03-06
  Scenarios launched: 200
  Scenarios completed: 200
  Requests completed: 10000
  RPS sent: 585.14
  Request latency:
    min: 62.7
    max: 468.6
    median: 270.6
    p95: 381.6
    p99: 410
  Scenario counts:
    0: 200 (100%)
  Codes:
    200: 10000
```

## Basic - 500 "Virtual Users", 100 GETs

```
λ artillery quick --count 500 -n 100 http://159.65.99.177:3000/basic
Started phase 0, duration: 10s @ 15:27:51(-0600) 2018-03-06
Report @ 15:28:01(-0600) 2018-03-06
  Scenarios launched: 499
  Scenarios completed: 0
  Requests completed: 2969
  RPS sent: 347.05
  Request latency:
    min: 68.3
    max: 1459.7
    median: 657.3
    p95: 1170.9
    p99: 1273.4
  Codes:
    200: 2969

Report @ 15:28:11(-0600) 2018-03-06
  Scenarios launched: 1
  Scenarios completed: 0
  Requests completed: 3221
  RPS sent: 322.3
  Request latency:
    min: 1228.9
    max: 2406.5
    median: 1474.4
    p95: 2157.3
    p99: 2234.8
  Codes:
    200: 3221

Report @ 15:28:21(-0600) 2018-03-06
  Scenarios launched: 0
  Scenarios completed: 0
  Requests completed: 3465
  RPS sent: 347.19
  Request latency:
    min: 1170.7
    max: 1972.4
    median: 1472.9
    p95: 1591.9
    p99: 1623.6
  Codes:
    200: 3465

Report @ 15:28:31(-0600) 2018-03-06
  Scenarios launched: 0
  Scenarios completed: 0
  Requests completed: 2944
  RPS sent: 295.29
  Request latency:
    min: 1336.3
    max: 2194.1
    median: 1659.1
    p95: 1851.4
    p99: 1917.3
  Codes:
    200: 2944

Report @ 15:28:41(-0600) 2018-03-06
  Scenarios launched: 0
  Scenarios completed: 0
  Requests completed: 2695
  RPS sent: 269.5
  Request latency:
    min: 1511
    max: 2925.6
    median: 1708.7
    p95: 2599.9
    p99: 2763
  Codes:
    200: 2695

Report @ 15:28:51(-0600) 2018-03-06
  Scenarios launched: 0
  Scenarios completed: 0
  Requests completed: 3173
  RPS sent: 317.3
  Request latency:
    min: 1215.4
    max: 2177.5
    median: 1605.9
    p95: 1855.3
    p99: 1914.4
  Codes:
    200: 3173

Report @ 15:29:01(-0600) 2018-03-06
  Scenarios launched: 0
  Scenarios completed: 0
  Requests completed: 3103
  RPS sent: 311.55
  Request latency:
    min: 1365.4
    max: 2064.8
    median: 1575.2
    p95: 1790.9
    p99: 1839.5
  Codes:
    200: 3103

Report @ 15:29:11(-0600) 2018-03-06
  Scenarios launched: 0
  Scenarios completed: 0
  Requests completed: 3926
  RPS sent: 392.21
  Request latency:
    min: 1007.3
    max: 1879
    median: 1298.1
    p95: 1652.6
    p99: 1695.8
  Codes:
    200: 3926

Report @ 15:29:21(-0600) 2018-03-06
  Scenarios launched: 0
  Scenarios completed: 0
  Requests completed: 3500
  RPS sent: 351.05
  Request latency:
    min: 1035.3
    max: 2560.6
    median: 1223.3
    p95: 2261.8
    p99: 2317.5
  Codes:
    200: 3500

Report @ 15:29:31(-0600) 2018-03-06
  Scenarios launched: 0
  Scenarios completed: 0
  Requests completed: 3762
  RPS sent: 375.82
  Request latency:
    min: 892
    max: 2616
    median: 1372.8
    p95: 1992.1
    p99: 2263.5
  Codes:
    200: 3762

Report @ 15:29:41(-0600) 2018-03-06
  Scenarios launched: 0
  Scenarios completed: 0
  Requests completed: 4787
  RPS sent: 478.22
  Request latency:
    min: 872.3
    max: 1304.4
    median: 1029.1
    p95: 1211.3
    p99: 1256.7
  Codes:
    200: 4787

Report @ 15:29:51(-0600) 2018-03-06
  Scenarios launched: 0
  Scenarios completed: 2
  Requests completed: 4288
  RPS sent: 429.89
  Request latency:
    min: 955.4
    max: 1546.2
    median: 1154.3
    p95: 1316
    p99: 1342.4
  Codes:
    200: 4288

Report @ 15:30:01(-0600) 2018-03-06
  Scenarios launched: 0
  Scenarios completed: 43
  Requests completed: 3345
  RPS sent: 330.86
  Request latency:
    min: 1169.9
    max: 2025.5
    median: 1439.5
    p95: 1695.3
    p99: 1735.2
  Codes:
    200: 3345

Report @ 15:30:11(-0600) 2018-03-06
  Scenarios launched: 0
  Scenarios completed: 128
  Requests completed: 3091
  RPS sent: 297.19
  Request latency:
    min: 1062.3
    max: 2158.7
    median: 1313.9
    p95: 1688.9
    p99: 1725.6
  Codes:
    200: 3091

Report @ 15:30:17(-0600) 2018-03-06
  Scenarios launched: 0
  Scenarios completed: 327
  Requests completed: 1731
  RPS sent: 256.67
  Request latency:
    min: 67.3
    max: 1544.1
    median: 812.7
    p95: 1134.7
    p99: 1194.8
  Codes:
    200: 1731

All virtual users finished
Summary report @ 15:30:17(-0600) 2018-03-06
  Scenarios launched: 500
  Scenarios completed: 500
  Requests completed: 50000
  RPS sent: 342.4
  Request latency:
    min: 67.3
    max: 2925.6
    median: 1343.2
    p95: 1868.3
    p99: 2289
  Scenario counts:
    0: 500 (100%)
  Codes:
    200: 50000
```

## Promise - 500 "Virtual Users", 100 GETs

```
λ artillery quick --count 500 -n 100 http://159.65.99.177:3000/promise
Started phase 0, duration: 10s @ 15:23:49(-0600) 2018-03-06
Report @ 15:23:59(-0600) 2018-03-06
  Scenarios launched: 499
  Scenarios completed: 0
  Requests completed: 2840
  RPS sent: 334.13
  Request latency:
    min: 73.3
    max: 1409
    median: 838
    p95: 1189.6
    p99: 1291.6
  Codes:
    200: 2840

Report @ 15:24:09(-0600) 2018-03-06
  Scenarios launched: 1
  Scenarios completed: 0
  Requests completed: 3281
  RPS sent: 328.3
  Request latency:
    min: 1109.5
    max: 2140.4
    median: 1508.1
    p95: 1780.6
    p99: 1811.6
  Codes:
    200: 3281

Report @ 15:24:19(-0600) 2018-03-06
  Scenarios launched: 0
  Scenarios completed: 0
  Requests completed: 3164
  RPS sent: 316.4
  Request latency:
    min: 1341.6
    max: 2064.7
    median: 1568.2
    p95: 1747.3
    p99: 1788.5
  Codes:
    200: 3164

Report @ 15:24:29(-0600) 2018-03-06
  Scenarios launched: 0
  Scenarios completed: 0
  Requests completed: 3389
  RPS sent: 338.9
  Request latency:
    min: 1130.1
    max: 2303.4
    median: 1441.1
    p95: 1931.9
    p99: 2009.6
  Codes:
    200: 3389

Report @ 15:24:39(-0600) 2018-03-06
  Scenarios launched: 0
  Scenarios completed: 0
  Requests completed: 3653
  RPS sent: 365.3
  Request latency:
    min: 1129.9
    max: 1912.8
    median: 1344
    p95: 1672
    p99: 1750.4
  Codes:
    200: 3653

Report @ 15:24:49(-0600) 2018-03-06
  Scenarios launched: 0
  Scenarios completed: 0
  Requests completed: 3239
  RPS sent: 323.8
  Request latency:
    min: 1177.4
    max: 2181.4
    median: 1541.4
    p95: 1996.8
    p99: 2080.1
  Codes:
    200: 3239

Report @ 15:24:59(-0600) 2018-03-06
  Scenarios launched: 0
  Scenarios completed: 0
  Requests completed: 3167
  RPS sent: 316.7
  Request latency:
    min: 1211.1
    max: 2267.6
    median: 1557
    p95: 1819.5
    p99: 1874.5
  Codes:
    200: 3167

Report @ 15:25:09(-0600) 2018-03-06
  Scenarios launched: 0
  Scenarios completed: 0
  Requests completed: 3285
  RPS sent: 328.6
  Request latency:
    min: 1291.1
    max: 2083.3
    median: 1534.9
    p95: 1748.2
    p99: 1818.5
  Codes:
    200: 3285

Report @ 15:25:20(-0600) 2018-03-06
  Scenarios launched: 0
  Scenarios completed: 0
  Requests completed: 3217
  RPS sent: 322.02
  Request latency:
    min: 1195
    max: 2412.1
    median: 1554.5
    p95: 1967.8
    p99: 2017.9
  Codes:
    200: 3217

Report @ 15:25:30(-0600) 2018-03-06
  Scenarios launched: 0
  Scenarios completed: 0
  Requests completed: 3744
  RPS sent: 375.53
  Request latency:
    min: 1024.8
    max: 1831.5
    median: 1325
    p95: 1604.3
    p99: 1667.5
  Codes:
    200: 3744

Report @ 15:25:40(-0600) 2018-03-06
  Scenarios launched: 0
  Scenarios completed: 0
  Requests completed: 3376
  RPS sent: 337.6
  Request latency:
    min: 1266.4
    max: 1897.7
    median: 1509.7
    p95: 1641.8
    p99: 1688.3
  Codes:
    200: 3376

Report @ 15:25:50(-0600) 2018-03-06
  Scenarios launched: 0
  Scenarios completed: 0
  Requests completed: 3311
  RPS sent: 331.1
  Request latency:
    min: 1124.3
    max: 2060.3
    median: 1534.3
    p95: 1781.6
    p99: 1822.9
  Codes:
    200: 3311

Report @ 15:26:00(-0600) 2018-03-06
  Scenarios launched: 0
  Scenarios completed: 10
  Requests completed: 3122
  RPS sent: 312.45
  Request latency:
    min: 1254.5
    max: 2007.5
    median: 1627.3
    p95: 1750.8
    p99: 1789.1
  Codes:
    200: 3122

Report @ 15:26:10(-0600) 2018-03-06
  Scenarios launched: 0
  Scenarios completed: 50
  Requests completed: 3369
  RPS sent: 332.23
  Request latency:
    min: 1104.9
    max: 1970.4
    median: 1416.5
    p95: 1659.1
    p99: 1730.9
  Codes:
    200: 3369

Report @ 15:26:20(-0600) 2018-03-06
  Scenarios launched: 0
  Scenarios completed: 209
  Requests completed: 3203
  RPS sent: 299.4
  Request latency:
    min: 827.1
    max: 1679.7
    median: 1181.5
    p95: 1464.4
    p99: 1502.7
  Codes:
    200: 3203

Report @ 15:26:22(-0600) 2018-03-06
  Scenarios launched: 0
  Scenarios completed: 231
  Requests completed: 640
  RPS sent: 162.95
  Request latency:
    min: 118.2
    max: 944.7
    median: 790.7
    p95: 894
    p99: 928.5
  Codes:
    200: 640

All virtual users finished
Summary report @ 15:26:22(-0600) 2018-03-06
  Scenarios launched: 500
  Scenarios completed: 500
  Requests completed: 50000
  RPS sent: 326.71
  Request latency:
    min: 73.3
    max: 2412.1
    median: 1460.3
    p95: 1776.8
    p99: 1962.2
  Scenario counts:
    0: 500 (100%)
  Codes:
    200: 50000
```

# 1x CPU, 1 GiB Ram

## Basic - 500 "Virtual Users", 100 GETs

```
λ artillery quick --count 500 -n 100 http://159.65.98.204:3000/basic
Started phase 0, duration: 10s @ 16:06:07(-0600) 2018-03-06
Report @ 16:06:17(-0600) 2018-03-06
  Scenarios launched: 499
  Scenarios completed: 0
  Requests completed: 6656
  RPS sent: 714.79
  Request latency:
    min: 64.3
    max: 734.5
    median: 357.6
    p95: 558.2
    p99: 615.7
  Codes:
    200: 6656

Report @ 16:06:27(-0600) 2018-03-06
  Scenarios launched: 1
  Scenarios completed: 0
  Requests completed: 8778
  RPS sent: 876.05
  Request latency:
    min: 499.7
    max: 868.6
    median: 575.8
    p95: 605.5
    p99: 626.5
  Codes:
    200: 8778

Report @ 16:06:37(-0600) 2018-03-06
  Scenarios launched: 0
  Scenarios completed: 0
  Requests completed: 8864
  RPS sent: 884.73
  Request latency:
    min: 476.5
    max: 873.3
    median: 568.8
    p95: 603.4
    p99: 615.9
  Codes:
    200: 8864

Report @ 16:06:47(-0600) 2018-03-06
  Scenarios launched: 0
  Scenarios completed: 0
  Requests completed: 8760
  RPS sent: 874.25
  Request latency:
    min: 473.4
    max: 849.6
    median: 569.5
    p95: 614.6
    p99: 633.4
  Codes:
    200: 8760

Report @ 16:06:57(-0600) 2018-03-06
  Scenarios launched: 0
  Scenarios completed: 65
  Requests completed: 8857
  RPS sent: 877.45
  Request latency:
    min: 467.9
    max: 856.4
    median: 542.4
    p95: 590
    p99: 613.9
  Codes:
    200: 8857

Report @ 16:07:07(-0600) 2018-03-06
  Scenarios launched: 0
  Scenarios completed: 435
  Requests completed: 8085
  RPS sent: 802.73
  Request latency:
    min: 63
    max: 554.6
    median: 415.7
    p95: 503
    p99: 517.4
  Codes:
    200: 8085

All virtual users finished
Summary report @ 16:07:07(-0600) 2018-03-06
  Scenarios launched: 500
  Scenarios completed: 500
  Requests completed: 50000
  RPS sent: 834.72
  Request latency:
    min: 63
    max: 873.3
    median: 552.7
    p95: 600.5
    p99: 622.7
  Scenario counts:
    0: 500 (100%)
  Codes:
    200: 50000
```

## Promise - 500 "Virtual Users", 100 GETs

```
λ artillery quick --count 500 -n 100 http://159.65.98.204:3000/promise
Started phase 0, duration: 10s @ 16:08:07(-0600) 2018-03-06
Report @ 16:08:17(-0600) 2018-03-06
  Scenarios launched: 499
  Scenarios completed: 0
  Requests completed: 7403
  RPS sent: 788.61
  Request latency:
    min: 63.5
    max: 700
    median: 306.2
    p95: 516.4
    p99: 564.6
  Codes:
    200: 7403

Report @ 16:08:28(-0600) 2018-03-06
  Scenarios launched: 1
  Scenarios completed: 0
  Requests completed: 9068
  RPS sent: 904.99
  Request latency:
    min: 470.2
    max: 822.4
    median: 555.3
    p95: 593.2
    p99: 613.7
  Codes:
    200: 9068

Report @ 16:08:38(-0600) 2018-03-06
  Scenarios launched: 0
  Scenarios completed: 0
  Requests completed: 8916
  RPS sent: 893.39
  Request latency:
    min: 473.4
    max: 872.2
    median: 561.1
    p95: 603.4
    p99: 629.3
  Codes:
    200: 8916

Report @ 16:08:48(-0600) 2018-03-06
  Scenarios launched: 0
  Scenarios completed: 9
  Requests completed: 8784
  RPS sent: 875.75
  Request latency:
    min: 503.8
    max: 694.4
    median: 565.7
    p95: 645.4
    p99: 677.2
  Codes:
    200: 8784

Report @ 16:08:58(-0600) 2018-03-06
  Scenarios launched: 0
  Scenarios completed: 90
  Requests completed: 8995
  RPS sent: 888.62
  Request latency:
    min: 406.5
    max: 804.5
    median: 516.3
    p95: 569
    p99: 588.2
  Codes:
    200: 8995

Report @ 16:09:06(-0600) 2018-03-06
  Scenarios launched: 0
  Scenarios completed: 401
  Requests completed: 6834
  RPS sent: 799.25
  Request latency:
    min: 62.2
    max: 533.6
    median: 375.8
    p95: 449.2
    p99: 506.3
  Codes:
    200: 6834

All virtual users finished
Summary report @ 16:09:06(-0600) 2018-03-06
  Scenarios launched: 500
  Scenarios completed: 500
  Requests completed: 50000
  RPS sent: 855.72
  Request latency:
    min: 62.2
    max: 872.2
    median: 536.9
    p95: 598.4
    p99: 645.7
  Scenario counts:
    0: 500 (100%)
  Codes:
    200: 50000
```