diff --git a/spikes/leak/.babelrc b/spikes/leak/.babelrc
new file mode 100644
index 00000000..82cc857a
--- /dev/null
+++ b/spikes/leak/.babelrc
@@ -0,0 +1,15 @@
+{
+ "presets": [
+ "react",
+ "es2015"
+ ],
+ "plugins": [
+ ["transform-object-rest-spread", {
+ "useBuiltIns": true
+ }],
+ "add-module-exports",
+ "transform-es2015-modules-commonjs",
+ "react-hot-loader/babel"
+ ],
+ "sourceMaps": "both"
+}
diff --git a/spikes/leak/.eslintignore b/spikes/leak/.eslintignore
new file mode 100644
index 00000000..683e721c
--- /dev/null
+++ b/spikes/leak/.eslintignore
@@ -0,0 +1,3 @@
+/node_modules
+coverage
+.nyc_output
diff --git a/spikes/leak/.eslintrc b/spikes/leak/.eslintrc
new file mode 100644
index 00000000..19bd88dc
--- /dev/null
+++ b/spikes/leak/.eslintrc
@@ -0,0 +1,29 @@
+{
+ "extends": "semistandard",
+ "parser": "babel-eslint",
+ "parserOptions": {
+ "ecmaVersion": 7,
+ "ecmaFeatures": {
+ "jsx": true
+ },
+ "sourceType": "module"
+ },
+ "plugins": [
+ "babel",
+ "react"
+ ],
+ "rules": {
+ "generator-star-spacing": 0,
+ "babel/generator-star-spacing": 1,
+ "space-before-function-paren": [2, "never"],
+ "react/jsx-uses-react": 2,
+ "react/jsx-uses-vars": 2,
+ "react/react-in-jsx-scope": 2,
+ "object-curly-newline": ["error", {
+ "minProperties": 1
+ }],
+ "sort-vars": ["error", {
+ "ignoreCase": true
+ }]
+ }
+}
\ No newline at end of file
diff --git a/spikes/leak/artillery-fast.yml b/spikes/leak/artillery/artillery-another-fast.yml
similarity index 100%
rename from spikes/leak/artillery-fast.yml
rename to spikes/leak/artillery/artillery-another-fast.yml
diff --git a/spikes/leak/artillery-cpu.yml b/spikes/leak/artillery/artillery-cpu.yml
similarity index 100%
rename from spikes/leak/artillery-cpu.yml
rename to spikes/leak/artillery/artillery-cpu.yml
diff --git a/spikes/leak/artillery/artillery-fast.yml b/spikes/leak/artillery/artillery-fast.yml
new file mode 100644
index 00000000..2aff8937
--- /dev/null
+++ b/spikes/leak/artillery/artillery-fast.yml
@@ -0,0 +1,9 @@
+config:
+ target: "http://fast-node:8000"
+ phases:
+ - duration: 13200
+ arrivalRate: 1
+scenarios:
+ - flow:
+ - get:
+ url: "/mem-fast"
diff --git a/spikes/leak/artillery-plain.yml b/spikes/leak/artillery/artillery-plain.yml
similarity index 100%
rename from spikes/leak/artillery-plain.yml
rename to spikes/leak/artillery/artillery-plain.yml
diff --git a/spikes/leak/artillery-slow.yml b/spikes/leak/artillery/artillery-slow.yml
similarity index 100%
rename from spikes/leak/artillery-slow.yml
rename to spikes/leak/artillery/artillery-slow.yml
diff --git a/spikes/leak/docker-compose.yml b/spikes/leak/docker-compose.yml
index 4a04bdfc..69b9709d 100644
--- a/spikes/leak/docker-compose.yml
+++ b/spikes/leak/docker-compose.yml
@@ -13,6 +13,19 @@ services:
- MODE=fast
depends_on:
- fast-node
+ another-fast-node:
+ build: .
+ environment:
+ - TYPE=node
+ ports:
+ - "8004:8000"
+ another-fast-artillery:
+ build: .
+ environment:
+ - TYPE=artillery
+ - MODE=another-fast
+ depends_on:
+ - another-fast-node
slow-node:
build: .
environment:
@@ -49,5 +62,6 @@ services:
- TYPE=telemetry
depends_on:
- fast-node
+ - another-fast-node
- slow-node
- plain-node
diff --git a/spikes/leak/etc/containerpilot.json b/spikes/leak/etc/containerpilot.json
deleted file mode 100644
index 9e26dfee..00000000
--- a/spikes/leak/etc/containerpilot.json
+++ /dev/null
@@ -1 +0,0 @@
-{}
\ No newline at end of file
diff --git a/spikes/leak/metrics.json b/spikes/leak/metrics.json
new file mode 100644
index 00000000..135c1a53
--- /dev/null
+++ b/spikes/leak/metrics.json
@@ -0,0 +1,3012 @@
+{
+ "leak-fast": {
+ "node_memory_heap_used_bytes": {
+ "another-fast-node:8000": [
+ [
+ 1479914179,
+ "21731384"
+ ],
+ [
+ 1479914180,
+ "21731384"
+ ],
+ [
+ 1479914181,
+ "21731384"
+ ],
+ [
+ 1479914182,
+ "21731384"
+ ],
+ [
+ 1479914183,
+ "21731384"
+ ],
+ [
+ 1479914184,
+ "23129048"
+ ],
+ [
+ 1479914185,
+ "23129048"
+ ],
+ [
+ 1479914186,
+ "23129048"
+ ],
+ [
+ 1479914187,
+ "23129048"
+ ],
+ [
+ 1479914188,
+ "23129048"
+ ],
+ [
+ 1479914189,
+ "24494096"
+ ],
+ [
+ 1479914190,
+ "24494096"
+ ],
+ [
+ 1479914191,
+ "24494096"
+ ],
+ [
+ 1479914192,
+ "24494096"
+ ],
+ [
+ 1479914193,
+ "24494096"
+ ],
+ [
+ 1479914194,
+ "25938144"
+ ],
+ [
+ 1479914195,
+ "25938144"
+ ],
+ [
+ 1479914196,
+ "25938144"
+ ],
+ [
+ 1479914197,
+ "25938144"
+ ],
+ [
+ 1479914198,
+ "25938144"
+ ],
+ [
+ 1479914199,
+ "27200488"
+ ],
+ [
+ 1479914200,
+ "27200488"
+ ],
+ [
+ 1479914201,
+ "27200488"
+ ],
+ [
+ 1479914202,
+ "27200488"
+ ],
+ [
+ 1479914203,
+ "27200488"
+ ],
+ [
+ 1479914204,
+ "28430224"
+ ],
+ [
+ 1479914205,
+ "28430224"
+ ],
+ [
+ 1479914206,
+ "28430224"
+ ],
+ [
+ 1479914207,
+ "28430224"
+ ],
+ [
+ 1479914208,
+ "28430224"
+ ],
+ [
+ 1479914209,
+ "23316232"
+ ],
+ [
+ 1479914210,
+ "23316232"
+ ],
+ [
+ 1479914211,
+ "23316232"
+ ],
+ [
+ 1479914212,
+ "23316232"
+ ],
+ [
+ 1479914213,
+ "23316232"
+ ],
+ [
+ 1479914214,
+ "23278384"
+ ],
+ [
+ 1479914215,
+ "23278384"
+ ],
+ [
+ 1479914216,
+ "23278384"
+ ],
+ [
+ 1479914217,
+ "23278384"
+ ],
+ [
+ 1479914218,
+ "23278384"
+ ],
+ [
+ 1479914219,
+ "23770456"
+ ],
+ [
+ 1479914220,
+ "23770456"
+ ],
+ [
+ 1479914221,
+ "23770456"
+ ],
+ [
+ 1479914222,
+ "23770456"
+ ],
+ [
+ 1479914223,
+ "23770456"
+ ],
+ [
+ 1479914224,
+ "24169576"
+ ],
+ [
+ 1479914225,
+ "24169576"
+ ],
+ [
+ 1479914226,
+ "24169576"
+ ],
+ [
+ 1479914227,
+ "24169576"
+ ],
+ [
+ 1479914228,
+ "24169576"
+ ],
+ [
+ 1479914229,
+ "23686096"
+ ],
+ [
+ 1479914230,
+ "23686096"
+ ],
+ [
+ 1479914231,
+ "23686096"
+ ],
+ [
+ 1479914232,
+ "23686096"
+ ],
+ [
+ 1479914233,
+ "23686096"
+ ],
+ [
+ 1479914234,
+ "23974320"
+ ],
+ [
+ 1479914235,
+ "23974320"
+ ],
+ [
+ 1479914236,
+ "23974320"
+ ],
+ [
+ 1479914237,
+ "23974320"
+ ],
+ [
+ 1479914238,
+ "23974320"
+ ],
+ [
+ 1479914239,
+ "24346072"
+ ],
+ [
+ 1479914240,
+ "24346072"
+ ],
+ [
+ 1479914241,
+ "24346072"
+ ],
+ [
+ 1479914242,
+ "24346072"
+ ],
+ [
+ 1479914243,
+ "24346072"
+ ],
+ [
+ 1479914244,
+ "24693448"
+ ],
+ [
+ 1479914245,
+ "24693448"
+ ],
+ [
+ 1479914246,
+ "24693448"
+ ],
+ [
+ 1479914247,
+ "24693448"
+ ],
+ [
+ 1479914248,
+ "24693448"
+ ],
+ [
+ 1479914249,
+ "24294136"
+ ],
+ [
+ 1479914250,
+ "24294136"
+ ],
+ [
+ 1479914251,
+ "24294136"
+ ],
+ [
+ 1479914252,
+ "24294136"
+ ],
+ [
+ 1479914253,
+ "24294136"
+ ],
+ [
+ 1479914254,
+ "22697976"
+ ],
+ [
+ 1479914255,
+ "22697976"
+ ],
+ [
+ 1479914256,
+ "22697976"
+ ],
+ [
+ 1479914257,
+ "22697976"
+ ],
+ [
+ 1479914258,
+ "22697976"
+ ],
+ [
+ 1479914259,
+ "22329200"
+ ],
+ [
+ 1479914260,
+ "22329200"
+ ],
+ [
+ 1479914261,
+ "22329200"
+ ],
+ [
+ 1479914262,
+ "22329200"
+ ],
+ [
+ 1479914263,
+ "22329200"
+ ],
+ [
+ 1479914264,
+ "19140984"
+ ],
+ [
+ 1479914265,
+ "19140984"
+ ],
+ [
+ 1479914266,
+ "19140984"
+ ],
+ [
+ 1479914267,
+ "19140984"
+ ],
+ [
+ 1479914268,
+ "19140984"
+ ],
+ [
+ 1479914269,
+ "18725160"
+ ],
+ [
+ 1479914270,
+ "18725160"
+ ]
+ ],
+ "fast-node:8000": [
+ [
+ 1479914178,
+ "27983464"
+ ],
+ [
+ 1479914179,
+ "27983464"
+ ],
+ [
+ 1479914180,
+ "27983464"
+ ],
+ [
+ 1479914181,
+ "27983464"
+ ],
+ [
+ 1479914182,
+ "27983464"
+ ],
+ [
+ 1479914183,
+ "22900328"
+ ],
+ [
+ 1479914184,
+ "22900328"
+ ],
+ [
+ 1479914185,
+ "22900328"
+ ],
+ [
+ 1479914186,
+ "22900328"
+ ],
+ [
+ 1479914187,
+ "22900328"
+ ],
+ [
+ 1479914188,
+ "29941152"
+ ],
+ [
+ 1479914189,
+ "29941152"
+ ],
+ [
+ 1479914190,
+ "29941152"
+ ],
+ [
+ 1479914191,
+ "29941152"
+ ],
+ [
+ 1479914192,
+ "29941152"
+ ],
+ [
+ 1479914193,
+ "29808848"
+ ],
+ [
+ 1479914194,
+ "29808848"
+ ],
+ [
+ 1479914195,
+ "29808848"
+ ],
+ [
+ 1479914196,
+ "29808848"
+ ],
+ [
+ 1479914197,
+ "29808848"
+ ],
+ [
+ 1479914198,
+ "30235072"
+ ],
+ [
+ 1479914199,
+ "30235072"
+ ],
+ [
+ 1479914200,
+ "30235072"
+ ],
+ [
+ 1479914201,
+ "30235072"
+ ],
+ [
+ 1479914202,
+ "30235072"
+ ],
+ [
+ 1479914203,
+ "36984776"
+ ],
+ [
+ 1479914204,
+ "36984776"
+ ],
+ [
+ 1479914205,
+ "36984776"
+ ],
+ [
+ 1479914206,
+ "36984776"
+ ],
+ [
+ 1479914207,
+ "36984776"
+ ],
+ [
+ 1479914208,
+ "29274384"
+ ],
+ [
+ 1479914209,
+ "29274384"
+ ],
+ [
+ 1479914210,
+ "29274384"
+ ],
+ [
+ 1479914211,
+ "29274384"
+ ],
+ [
+ 1479914212,
+ "29274384"
+ ],
+ [
+ 1479914213,
+ "35922128"
+ ],
+ [
+ 1479914214,
+ "35922128"
+ ],
+ [
+ 1479914215,
+ "35922128"
+ ],
+ [
+ 1479914216,
+ "35922128"
+ ],
+ [
+ 1479914217,
+ "35922128"
+ ],
+ [
+ 1479914218,
+ "28783680"
+ ],
+ [
+ 1479914219,
+ "28783680"
+ ],
+ [
+ 1479914220,
+ "28783680"
+ ],
+ [
+ 1479914221,
+ "28783680"
+ ],
+ [
+ 1479914222,
+ "28783680"
+ ],
+ [
+ 1479914223,
+ "35445168"
+ ],
+ [
+ 1479914224,
+ "35445168"
+ ],
+ [
+ 1479914225,
+ "35445168"
+ ],
+ [
+ 1479914226,
+ "35445168"
+ ],
+ [
+ 1479914227,
+ "35445168"
+ ],
+ [
+ 1479914228,
+ "42148896"
+ ],
+ [
+ 1479914229,
+ "42148896"
+ ],
+ [
+ 1479914230,
+ "42148896"
+ ],
+ [
+ 1479914231,
+ "42148896"
+ ],
+ [
+ 1479914232,
+ "42148896"
+ ],
+ [
+ 1479914233,
+ "35088656"
+ ],
+ [
+ 1479914234,
+ "35088656"
+ ],
+ [
+ 1479914235,
+ "35088656"
+ ],
+ [
+ 1479914236,
+ "35088656"
+ ],
+ [
+ 1479914237,
+ "35088656"
+ ],
+ [
+ 1479914238,
+ "42443008"
+ ],
+ [
+ 1479914239,
+ "42443008"
+ ],
+ [
+ 1479914240,
+ "42443008"
+ ],
+ [
+ 1479914241,
+ "42443008"
+ ],
+ [
+ 1479914242,
+ "42443008"
+ ],
+ [
+ 1479914243,
+ "35406424"
+ ],
+ [
+ 1479914244,
+ "35406424"
+ ],
+ [
+ 1479914245,
+ "35406424"
+ ],
+ [
+ 1479914246,
+ "35406424"
+ ],
+ [
+ 1479914247,
+ "35406424"
+ ],
+ [
+ 1479914248,
+ "42101624"
+ ],
+ [
+ 1479914249,
+ "42101624"
+ ],
+ [
+ 1479914250,
+ "42101624"
+ ],
+ [
+ 1479914251,
+ "42101624"
+ ],
+ [
+ 1479914252,
+ "42101624"
+ ],
+ [
+ 1479914253,
+ "35134416"
+ ],
+ [
+ 1479914254,
+ "35134416"
+ ],
+ [
+ 1479914255,
+ "35134416"
+ ],
+ [
+ 1479914256,
+ "35134416"
+ ],
+ [
+ 1479914257,
+ "35134416"
+ ],
+ [
+ 1479914258,
+ "41812992"
+ ],
+ [
+ 1479914259,
+ "41812992"
+ ],
+ [
+ 1479914260,
+ "41812992"
+ ],
+ [
+ 1479914261,
+ "41812992"
+ ],
+ [
+ 1479914262,
+ "41812992"
+ ],
+ [
+ 1479914263,
+ "48513768"
+ ],
+ [
+ 1479914264,
+ "48513768"
+ ],
+ [
+ 1479914265,
+ "48513768"
+ ],
+ [
+ 1479914266,
+ "48513768"
+ ],
+ [
+ 1479914267,
+ "48513768"
+ ],
+ [
+ 1479914268,
+ "41557040"
+ ],
+ [
+ 1479914269,
+ "41557040"
+ ],
+ [
+ 1479914270,
+ "41557040"
+ ]
+ ]
+ },
+ "node_memory_heap_total_bytes": {
+ "another-fast-node:8000": [
+ [
+ 1479914179,
+ "41922560"
+ ],
+ [
+ 1479914180,
+ "41922560"
+ ],
+ [
+ 1479914181,
+ "41922560"
+ ],
+ [
+ 1479914182,
+ "41922560"
+ ],
+ [
+ 1479914183,
+ "41922560"
+ ],
+ [
+ 1479914184,
+ "41922560"
+ ],
+ [
+ 1479914185,
+ "41922560"
+ ],
+ [
+ 1479914186,
+ "41922560"
+ ],
+ [
+ 1479914187,
+ "41922560"
+ ],
+ [
+ 1479914188,
+ "41922560"
+ ],
+ [
+ 1479914189,
+ "42971136"
+ ],
+ [
+ 1479914190,
+ "42971136"
+ ],
+ [
+ 1479914191,
+ "42971136"
+ ],
+ [
+ 1479914192,
+ "42971136"
+ ],
+ [
+ 1479914193,
+ "42971136"
+ ],
+ [
+ 1479914194,
+ "42971136"
+ ],
+ [
+ 1479914195,
+ "42971136"
+ ],
+ [
+ 1479914196,
+ "42971136"
+ ],
+ [
+ 1479914197,
+ "42971136"
+ ],
+ [
+ 1479914198,
+ "42971136"
+ ],
+ [
+ 1479914199,
+ "42971136"
+ ],
+ [
+ 1479914200,
+ "42971136"
+ ],
+ [
+ 1479914201,
+ "42971136"
+ ],
+ [
+ 1479914202,
+ "42971136"
+ ],
+ [
+ 1479914203,
+ "42971136"
+ ],
+ [
+ 1479914204,
+ "42971136"
+ ],
+ [
+ 1479914205,
+ "42971136"
+ ],
+ [
+ 1479914206,
+ "42971136"
+ ],
+ [
+ 1479914207,
+ "42971136"
+ ],
+ [
+ 1479914208,
+ "42971136"
+ ],
+ [
+ 1479914209,
+ "29339648"
+ ],
+ [
+ 1479914210,
+ "29339648"
+ ],
+ [
+ 1479914211,
+ "29339648"
+ ],
+ [
+ 1479914212,
+ "29339648"
+ ],
+ [
+ 1479914213,
+ "29339648"
+ ],
+ [
+ 1479914214,
+ "29339648"
+ ],
+ [
+ 1479914215,
+ "29339648"
+ ],
+ [
+ 1479914216,
+ "29339648"
+ ],
+ [
+ 1479914217,
+ "29339648"
+ ],
+ [
+ 1479914218,
+ "29339648"
+ ],
+ [
+ 1479914219,
+ "29339648"
+ ],
+ [
+ 1479914220,
+ "29339648"
+ ],
+ [
+ 1479914221,
+ "29339648"
+ ],
+ [
+ 1479914222,
+ "29339648"
+ ],
+ [
+ 1479914223,
+ "29339648"
+ ],
+ [
+ 1479914224,
+ "29339648"
+ ],
+ [
+ 1479914225,
+ "29339648"
+ ],
+ [
+ 1479914226,
+ "29339648"
+ ],
+ [
+ 1479914227,
+ "29339648"
+ ],
+ [
+ 1479914228,
+ "29339648"
+ ],
+ [
+ 1479914229,
+ "29339648"
+ ],
+ [
+ 1479914230,
+ "29339648"
+ ],
+ [
+ 1479914231,
+ "29339648"
+ ],
+ [
+ 1479914232,
+ "29339648"
+ ],
+ [
+ 1479914233,
+ "29339648"
+ ],
+ [
+ 1479914234,
+ "30388224"
+ ],
+ [
+ 1479914235,
+ "30388224"
+ ],
+ [
+ 1479914236,
+ "30388224"
+ ],
+ [
+ 1479914237,
+ "30388224"
+ ],
+ [
+ 1479914238,
+ "30388224"
+ ],
+ [
+ 1479914239,
+ "30388224"
+ ],
+ [
+ 1479914240,
+ "30388224"
+ ],
+ [
+ 1479914241,
+ "30388224"
+ ],
+ [
+ 1479914242,
+ "30388224"
+ ],
+ [
+ 1479914243,
+ "30388224"
+ ],
+ [
+ 1479914244,
+ "30388224"
+ ],
+ [
+ 1479914245,
+ "30388224"
+ ],
+ [
+ 1479914246,
+ "30388224"
+ ],
+ [
+ 1479914247,
+ "30388224"
+ ],
+ [
+ 1479914248,
+ "30388224"
+ ],
+ [
+ 1479914249,
+ "30388224"
+ ],
+ [
+ 1479914250,
+ "30388224"
+ ],
+ [
+ 1479914251,
+ "30388224"
+ ],
+ [
+ 1479914252,
+ "30388224"
+ ],
+ [
+ 1479914253,
+ "30388224"
+ ],
+ [
+ 1479914254,
+ "31436800"
+ ],
+ [
+ 1479914255,
+ "31436800"
+ ],
+ [
+ 1479914256,
+ "31436800"
+ ],
+ [
+ 1479914257,
+ "31436800"
+ ],
+ [
+ 1479914258,
+ "31436800"
+ ],
+ [
+ 1479914259,
+ "28291072"
+ ],
+ [
+ 1479914260,
+ "28291072"
+ ],
+ [
+ 1479914261,
+ "28291072"
+ ],
+ [
+ 1479914262,
+ "28291072"
+ ],
+ [
+ 1479914263,
+ "28291072"
+ ],
+ [
+ 1479914264,
+ "28291072"
+ ],
+ [
+ 1479914265,
+ "28291072"
+ ],
+ [
+ 1479914266,
+ "28291072"
+ ],
+ [
+ 1479914267,
+ "28291072"
+ ],
+ [
+ 1479914268,
+ "28291072"
+ ],
+ [
+ 1479914269,
+ "28291072"
+ ],
+ [
+ 1479914270,
+ "28291072"
+ ]
+ ],
+ "fast-node:8000": [
+ [
+ 1479914178,
+ "41922560"
+ ],
+ [
+ 1479914179,
+ "41922560"
+ ],
+ [
+ 1479914180,
+ "41922560"
+ ],
+ [
+ 1479914181,
+ "41922560"
+ ],
+ [
+ 1479914182,
+ "41922560"
+ ],
+ [
+ 1479914183,
+ "44019712"
+ ],
+ [
+ 1479914184,
+ "44019712"
+ ],
+ [
+ 1479914185,
+ "44019712"
+ ],
+ [
+ 1479914186,
+ "44019712"
+ ],
+ [
+ 1479914187,
+ "44019712"
+ ],
+ [
+ 1479914188,
+ "45068288"
+ ],
+ [
+ 1479914189,
+ "45068288"
+ ],
+ [
+ 1479914190,
+ "45068288"
+ ],
+ [
+ 1479914191,
+ "45068288"
+ ],
+ [
+ 1479914192,
+ "45068288"
+ ],
+ [
+ 1479914193,
+ "45068288"
+ ],
+ [
+ 1479914194,
+ "45068288"
+ ],
+ [
+ 1479914195,
+ "45068288"
+ ],
+ [
+ 1479914196,
+ "45068288"
+ ],
+ [
+ 1479914197,
+ "45068288"
+ ],
+ [
+ 1479914198,
+ "62894080"
+ ],
+ [
+ 1479914199,
+ "62894080"
+ ],
+ [
+ 1479914200,
+ "62894080"
+ ],
+ [
+ 1479914201,
+ "62894080"
+ ],
+ [
+ 1479914202,
+ "62894080"
+ ],
+ [
+ 1479914203,
+ "62894080"
+ ],
+ [
+ 1479914204,
+ "62894080"
+ ],
+ [
+ 1479914205,
+ "62894080"
+ ],
+ [
+ 1479914206,
+ "62894080"
+ ],
+ [
+ 1479914207,
+ "62894080"
+ ],
+ [
+ 1479914208,
+ "63942656"
+ ],
+ [
+ 1479914209,
+ "63942656"
+ ],
+ [
+ 1479914210,
+ "63942656"
+ ],
+ [
+ 1479914211,
+ "63942656"
+ ],
+ [
+ 1479914212,
+ "63942656"
+ ],
+ [
+ 1479914213,
+ "63942656"
+ ],
+ [
+ 1479914214,
+ "63942656"
+ ],
+ [
+ 1479914215,
+ "63942656"
+ ],
+ [
+ 1479914216,
+ "63942656"
+ ],
+ [
+ 1479914217,
+ "63942656"
+ ],
+ [
+ 1479914218,
+ "64991232"
+ ],
+ [
+ 1479914219,
+ "64991232"
+ ],
+ [
+ 1479914220,
+ "64991232"
+ ],
+ [
+ 1479914221,
+ "64991232"
+ ],
+ [
+ 1479914222,
+ "64991232"
+ ],
+ [
+ 1479914223,
+ "64991232"
+ ],
+ [
+ 1479914224,
+ "64991232"
+ ],
+ [
+ 1479914225,
+ "64991232"
+ ],
+ [
+ 1479914226,
+ "64991232"
+ ],
+ [
+ 1479914227,
+ "64991232"
+ ],
+ [
+ 1479914228,
+ "64991232"
+ ],
+ [
+ 1479914229,
+ "64991232"
+ ],
+ [
+ 1479914230,
+ "64991232"
+ ],
+ [
+ 1479914231,
+ "64991232"
+ ],
+ [
+ 1479914232,
+ "64991232"
+ ],
+ [
+ 1479914233,
+ "67088384"
+ ],
+ [
+ 1479914234,
+ "67088384"
+ ],
+ [
+ 1479914235,
+ "67088384"
+ ],
+ [
+ 1479914236,
+ "67088384"
+ ],
+ [
+ 1479914237,
+ "67088384"
+ ],
+ [
+ 1479914238,
+ "68136960"
+ ],
+ [
+ 1479914239,
+ "68136960"
+ ],
+ [
+ 1479914240,
+ "68136960"
+ ],
+ [
+ 1479914241,
+ "68136960"
+ ],
+ [
+ 1479914242,
+ "68136960"
+ ],
+ [
+ 1479914243,
+ "70234112"
+ ],
+ [
+ 1479914244,
+ "70234112"
+ ],
+ [
+ 1479914245,
+ "70234112"
+ ],
+ [
+ 1479914246,
+ "70234112"
+ ],
+ [
+ 1479914247,
+ "70234112"
+ ],
+ [
+ 1479914248,
+ "70234112"
+ ],
+ [
+ 1479914249,
+ "70234112"
+ ],
+ [
+ 1479914250,
+ "70234112"
+ ],
+ [
+ 1479914251,
+ "70234112"
+ ],
+ [
+ 1479914252,
+ "70234112"
+ ],
+ [
+ 1479914253,
+ "71282688"
+ ],
+ [
+ 1479914254,
+ "71282688"
+ ],
+ [
+ 1479914255,
+ "71282688"
+ ],
+ [
+ 1479914256,
+ "71282688"
+ ],
+ [
+ 1479914257,
+ "71282688"
+ ],
+ [
+ 1479914258,
+ "72331264"
+ ],
+ [
+ 1479914259,
+ "72331264"
+ ],
+ [
+ 1479914260,
+ "72331264"
+ ],
+ [
+ 1479914261,
+ "72331264"
+ ],
+ [
+ 1479914262,
+ "72331264"
+ ],
+ [
+ 1479914263,
+ "72331264"
+ ],
+ [
+ 1479914264,
+ "72331264"
+ ],
+ [
+ 1479914265,
+ "72331264"
+ ],
+ [
+ 1479914266,
+ "72331264"
+ ],
+ [
+ 1479914267,
+ "72331264"
+ ],
+ [
+ 1479914268,
+ "73379840"
+ ],
+ [
+ 1479914269,
+ "73379840"
+ ],
+ [
+ 1479914270,
+ "73379840"
+ ]
+ ]
+ }
+ },
+ "no-leak": {
+ "node_memory_heap_used_bytes": {
+ "plain-node:8000": [
+ [
+ 1479914178,
+ "28700032"
+ ],
+ [
+ 1479914179,
+ "28700032"
+ ],
+ [
+ 1479914180,
+ "28700032"
+ ],
+ [
+ 1479914181,
+ "28700032"
+ ],
+ [
+ 1479914182,
+ "28700032"
+ ],
+ [
+ 1479914183,
+ "26824696"
+ ],
+ [
+ 1479914184,
+ "26824696"
+ ],
+ [
+ 1479914185,
+ "26824696"
+ ],
+ [
+ 1479914186,
+ "26824696"
+ ],
+ [
+ 1479914187,
+ "26824696"
+ ],
+ [
+ 1479914188,
+ "23215624"
+ ],
+ [
+ 1479914189,
+ "23215624"
+ ],
+ [
+ 1479914190,
+ "23215624"
+ ],
+ [
+ 1479914191,
+ "23215624"
+ ],
+ [
+ 1479914192,
+ "23215624"
+ ],
+ [
+ 1479914193,
+ "23859448"
+ ],
+ [
+ 1479914194,
+ "23859448"
+ ],
+ [
+ 1479914195,
+ "23859448"
+ ],
+ [
+ 1479914196,
+ "23859448"
+ ],
+ [
+ 1479914197,
+ "23859448"
+ ],
+ [
+ 1479914198,
+ "24773048"
+ ],
+ [
+ 1479914199,
+ "24773048"
+ ],
+ [
+ 1479914200,
+ "24773048"
+ ],
+ [
+ 1479914201,
+ "24773048"
+ ],
+ [
+ 1479914202,
+ "24773048"
+ ],
+ [
+ 1479914203,
+ "25307104"
+ ],
+ [
+ 1479914204,
+ "25307104"
+ ],
+ [
+ 1479914205,
+ "25307104"
+ ],
+ [
+ 1479914206,
+ "25307104"
+ ],
+ [
+ 1479914207,
+ "25307104"
+ ],
+ [
+ 1479914208,
+ "25849776"
+ ],
+ [
+ 1479914209,
+ "25849776"
+ ],
+ [
+ 1479914210,
+ "25849776"
+ ],
+ [
+ 1479914211,
+ "25849776"
+ ],
+ [
+ 1479914212,
+ "25849776"
+ ],
+ [
+ 1479914213,
+ "23209280"
+ ],
+ [
+ 1479914214,
+ "23209280"
+ ],
+ [
+ 1479914215,
+ "23209280"
+ ],
+ [
+ 1479914216,
+ "23209280"
+ ],
+ [
+ 1479914217,
+ "23209280"
+ ],
+ [
+ 1479914218,
+ "22757024"
+ ],
+ [
+ 1479914219,
+ "22757024"
+ ],
+ [
+ 1479914220,
+ "22757024"
+ ],
+ [
+ 1479914221,
+ "22757024"
+ ],
+ [
+ 1479914222,
+ "22757024"
+ ],
+ [
+ 1479914223,
+ "20410336"
+ ],
+ [
+ 1479914224,
+ "20410336"
+ ],
+ [
+ 1479914225,
+ "20410336"
+ ],
+ [
+ 1479914226,
+ "20410336"
+ ],
+ [
+ 1479914227,
+ "20410336"
+ ],
+ [
+ 1479914228,
+ "20167104"
+ ],
+ [
+ 1479914229,
+ "20167104"
+ ],
+ [
+ 1479914230,
+ "20167104"
+ ],
+ [
+ 1479914231,
+ "20167104"
+ ],
+ [
+ 1479914232,
+ "20167104"
+ ],
+ [
+ 1479914233,
+ "20656536"
+ ],
+ [
+ 1479914234,
+ "20656536"
+ ],
+ [
+ 1479914235,
+ "20656536"
+ ],
+ [
+ 1479914236,
+ "20656536"
+ ],
+ [
+ 1479914237,
+ "20656536"
+ ],
+ [
+ 1479914238,
+ "21222096"
+ ],
+ [
+ 1479914239,
+ "21222096"
+ ],
+ [
+ 1479914240,
+ "21222096"
+ ],
+ [
+ 1479914241,
+ "21222096"
+ ],
+ [
+ 1479914242,
+ "21222096"
+ ],
+ [
+ 1479914243,
+ "21719560"
+ ],
+ [
+ 1479914244,
+ "21719560"
+ ],
+ [
+ 1479914245,
+ "21719560"
+ ],
+ [
+ 1479914246,
+ "21719560"
+ ],
+ [
+ 1479914247,
+ "21719560"
+ ],
+ [
+ 1479914248,
+ "22224184"
+ ],
+ [
+ 1479914249,
+ "22224184"
+ ],
+ [
+ 1479914250,
+ "22224184"
+ ],
+ [
+ 1479914251,
+ "22224184"
+ ],
+ [
+ 1479914252,
+ "22224184"
+ ],
+ [
+ 1479914253,
+ "22640344"
+ ],
+ [
+ 1479914254,
+ "22640344"
+ ],
+ [
+ 1479914255,
+ "22640344"
+ ],
+ [
+ 1479914256,
+ "22640344"
+ ],
+ [
+ 1479914257,
+ "22640344"
+ ],
+ [
+ 1479914258,
+ "23120608"
+ ],
+ [
+ 1479914259,
+ "23120608"
+ ],
+ [
+ 1479914260,
+ "23120608"
+ ],
+ [
+ 1479914261,
+ "23120608"
+ ],
+ [
+ 1479914262,
+ "23120608"
+ ],
+ [
+ 1479914263,
+ "23554496"
+ ],
+ [
+ 1479914264,
+ "23554496"
+ ],
+ [
+ 1479914265,
+ "23554496"
+ ],
+ [
+ 1479914266,
+ "23554496"
+ ],
+ [
+ 1479914267,
+ "23554496"
+ ],
+ [
+ 1479914268,
+ "24003960"
+ ],
+ [
+ 1479914269,
+ "24003960"
+ ],
+ [
+ 1479914270,
+ "24003960"
+ ]
+ ]
+ },
+ "node_memory_heap_total_bytes": {
+ "plain-node:8000": [
+ [
+ 1479914178,
+ "42971136"
+ ],
+ [
+ 1479914179,
+ "42971136"
+ ],
+ [
+ 1479914180,
+ "42971136"
+ ],
+ [
+ 1479914181,
+ "42971136"
+ ],
+ [
+ 1479914182,
+ "42971136"
+ ],
+ [
+ 1479914183,
+ "42971136"
+ ],
+ [
+ 1479914184,
+ "42971136"
+ ],
+ [
+ 1479914185,
+ "42971136"
+ ],
+ [
+ 1479914186,
+ "42971136"
+ ],
+ [
+ 1479914187,
+ "42971136"
+ ],
+ [
+ 1479914188,
+ "36679680"
+ ],
+ [
+ 1479914189,
+ "36679680"
+ ],
+ [
+ 1479914190,
+ "36679680"
+ ],
+ [
+ 1479914191,
+ "36679680"
+ ],
+ [
+ 1479914192,
+ "36679680"
+ ],
+ [
+ 1479914193,
+ "29339648"
+ ],
+ [
+ 1479914194,
+ "29339648"
+ ],
+ [
+ 1479914195,
+ "29339648"
+ ],
+ [
+ 1479914196,
+ "29339648"
+ ],
+ [
+ 1479914197,
+ "29339648"
+ ],
+ [
+ 1479914198,
+ "30388224"
+ ],
+ [
+ 1479914199,
+ "30388224"
+ ],
+ [
+ 1479914200,
+ "30388224"
+ ],
+ [
+ 1479914201,
+ "30388224"
+ ],
+ [
+ 1479914202,
+ "30388224"
+ ],
+ [
+ 1479914203,
+ "30388224"
+ ],
+ [
+ 1479914204,
+ "30388224"
+ ],
+ [
+ 1479914205,
+ "30388224"
+ ],
+ [
+ 1479914206,
+ "30388224"
+ ],
+ [
+ 1479914207,
+ "30388224"
+ ],
+ [
+ 1479914208,
+ "30388224"
+ ],
+ [
+ 1479914209,
+ "30388224"
+ ],
+ [
+ 1479914210,
+ "30388224"
+ ],
+ [
+ 1479914211,
+ "30388224"
+ ],
+ [
+ 1479914212,
+ "30388224"
+ ],
+ [
+ 1479914213,
+ "32485376"
+ ],
+ [
+ 1479914214,
+ "32485376"
+ ],
+ [
+ 1479914215,
+ "32485376"
+ ],
+ [
+ 1479914216,
+ "32485376"
+ ],
+ [
+ 1479914217,
+ "32485376"
+ ],
+ [
+ 1479914218,
+ "29339648"
+ ],
+ [
+ 1479914219,
+ "29339648"
+ ],
+ [
+ 1479914220,
+ "29339648"
+ ],
+ [
+ 1479914221,
+ "29339648"
+ ],
+ [
+ 1479914222,
+ "29339648"
+ ],
+ [
+ 1479914223,
+ "30388224"
+ ],
+ [
+ 1479914224,
+ "30388224"
+ ],
+ [
+ 1479914225,
+ "30388224"
+ ],
+ [
+ 1479914226,
+ "30388224"
+ ],
+ [
+ 1479914227,
+ "30388224"
+ ],
+ [
+ 1479914228,
+ "30388224"
+ ],
+ [
+ 1479914229,
+ "30388224"
+ ],
+ [
+ 1479914230,
+ "30388224"
+ ],
+ [
+ 1479914231,
+ "30388224"
+ ],
+ [
+ 1479914232,
+ "30388224"
+ ],
+ [
+ 1479914233,
+ "30388224"
+ ],
+ [
+ 1479914234,
+ "30388224"
+ ],
+ [
+ 1479914235,
+ "30388224"
+ ],
+ [
+ 1479914236,
+ "30388224"
+ ],
+ [
+ 1479914237,
+ "30388224"
+ ],
+ [
+ 1479914238,
+ "30388224"
+ ],
+ [
+ 1479914239,
+ "30388224"
+ ],
+ [
+ 1479914240,
+ "30388224"
+ ],
+ [
+ 1479914241,
+ "30388224"
+ ],
+ [
+ 1479914242,
+ "30388224"
+ ],
+ [
+ 1479914243,
+ "31436800"
+ ],
+ [
+ 1479914244,
+ "31436800"
+ ],
+ [
+ 1479914245,
+ "31436800"
+ ],
+ [
+ 1479914246,
+ "31436800"
+ ],
+ [
+ 1479914247,
+ "31436800"
+ ],
+ [
+ 1479914248,
+ "31436800"
+ ],
+ [
+ 1479914249,
+ "31436800"
+ ],
+ [
+ 1479914250,
+ "31436800"
+ ],
+ [
+ 1479914251,
+ "31436800"
+ ],
+ [
+ 1479914252,
+ "31436800"
+ ],
+ [
+ 1479914253,
+ "31436800"
+ ],
+ [
+ 1479914254,
+ "31436800"
+ ],
+ [
+ 1479914255,
+ "31436800"
+ ],
+ [
+ 1479914256,
+ "31436800"
+ ],
+ [
+ 1479914257,
+ "31436800"
+ ],
+ [
+ 1479914258,
+ "32485376"
+ ],
+ [
+ 1479914259,
+ "32485376"
+ ],
+ [
+ 1479914260,
+ "32485376"
+ ],
+ [
+ 1479914261,
+ "32485376"
+ ],
+ [
+ 1479914262,
+ "32485376"
+ ],
+ [
+ 1479914263,
+ "32485376"
+ ],
+ [
+ 1479914264,
+ "32485376"
+ ],
+ [
+ 1479914265,
+ "32485376"
+ ],
+ [
+ 1479914266,
+ "32485376"
+ ],
+ [
+ 1479914267,
+ "32485376"
+ ],
+ [
+ 1479914268,
+ "32485376"
+ ],
+ [
+ 1479914269,
+ "32485376"
+ ],
+ [
+ 1479914270,
+ "32485376"
+ ]
+ ]
+ }
+ },
+ "leak-slow": {
+ "node_memory_heap_used_bytes": {
+ "slow-node:8000": [
+ [
+ 1479914177,
+ "27964880"
+ ],
+ [
+ 1479914178,
+ "27964880"
+ ],
+ [
+ 1479914179,
+ "27964880"
+ ],
+ [
+ 1479914180,
+ "27964880"
+ ],
+ [
+ 1479914181,
+ "27964880"
+ ],
+ [
+ 1479914182,
+ "26315136"
+ ],
+ [
+ 1479914183,
+ "26315136"
+ ],
+ [
+ 1479914184,
+ "26315136"
+ ],
+ [
+ 1479914185,
+ "26315136"
+ ],
+ [
+ 1479914186,
+ "26315136"
+ ],
+ [
+ 1479914187,
+ "24342088"
+ ],
+ [
+ 1479914188,
+ "24342088"
+ ],
+ [
+ 1479914189,
+ "24342088"
+ ],
+ [
+ 1479914190,
+ "24342088"
+ ],
+ [
+ 1479914191,
+ "24342088"
+ ],
+ [
+ 1479914192,
+ "23689000"
+ ],
+ [
+ 1479914193,
+ "23689000"
+ ],
+ [
+ 1479914194,
+ "23689000"
+ ],
+ [
+ 1479914195,
+ "23689000"
+ ],
+ [
+ 1479914196,
+ "23689000"
+ ],
+ [
+ 1479914197,
+ "24684504"
+ ],
+ [
+ 1479914198,
+ "24684504"
+ ],
+ [
+ 1479914199,
+ "24684504"
+ ],
+ [
+ 1479914200,
+ "24684504"
+ ],
+ [
+ 1479914201,
+ "24684504"
+ ],
+ [
+ 1479914202,
+ "24751576"
+ ],
+ [
+ 1479914203,
+ "24751576"
+ ],
+ [
+ 1479914204,
+ "24751576"
+ ],
+ [
+ 1479914205,
+ "24751576"
+ ],
+ [
+ 1479914206,
+ "24751576"
+ ],
+ [
+ 1479914207,
+ "25520184"
+ ],
+ [
+ 1479914208,
+ "25520184"
+ ],
+ [
+ 1479914209,
+ "25520184"
+ ],
+ [
+ 1479914210,
+ "25520184"
+ ],
+ [
+ 1479914211,
+ "25520184"
+ ],
+ [
+ 1479914212,
+ "25843896"
+ ],
+ [
+ 1479914213,
+ "25843896"
+ ],
+ [
+ 1479914214,
+ "25843896"
+ ],
+ [
+ 1479914215,
+ "25843896"
+ ],
+ [
+ 1479914216,
+ "25843896"
+ ],
+ [
+ 1479914217,
+ "23577240"
+ ],
+ [
+ 1479914218,
+ "23577240"
+ ],
+ [
+ 1479914219,
+ "23577240"
+ ],
+ [
+ 1479914220,
+ "23577240"
+ ],
+ [
+ 1479914221,
+ "23577240"
+ ],
+ [
+ 1479914222,
+ "23262496"
+ ],
+ [
+ 1479914223,
+ "23262496"
+ ],
+ [
+ 1479914224,
+ "23262496"
+ ],
+ [
+ 1479914225,
+ "23262496"
+ ],
+ [
+ 1479914226,
+ "23262496"
+ ],
+ [
+ 1479914227,
+ "19624184"
+ ],
+ [
+ 1479914228,
+ "19624184"
+ ],
+ [
+ 1479914229,
+ "19624184"
+ ],
+ [
+ 1479914230,
+ "19624184"
+ ],
+ [
+ 1479914231,
+ "19624184"
+ ],
+ [
+ 1479914232,
+ "20555648"
+ ],
+ [
+ 1479914233,
+ "20555648"
+ ],
+ [
+ 1479914234,
+ "20555648"
+ ],
+ [
+ 1479914235,
+ "20555648"
+ ],
+ [
+ 1479914236,
+ "20555648"
+ ],
+ [
+ 1479914237,
+ "20523160"
+ ],
+ [
+ 1479914238,
+ "20523160"
+ ],
+ [
+ 1479914239,
+ "20523160"
+ ],
+ [
+ 1479914240,
+ "20523160"
+ ],
+ [
+ 1479914241,
+ "20523160"
+ ],
+ [
+ 1479914242,
+ "21232440"
+ ],
+ [
+ 1479914243,
+ "21232440"
+ ],
+ [
+ 1479914244,
+ "21232440"
+ ],
+ [
+ 1479914245,
+ "21232440"
+ ],
+ [
+ 1479914246,
+ "21232440"
+ ],
+ [
+ 1479914247,
+ "21913344"
+ ],
+ [
+ 1479914248,
+ "21913344"
+ ],
+ [
+ 1479914249,
+ "21913344"
+ ],
+ [
+ 1479914250,
+ "21913344"
+ ],
+ [
+ 1479914251,
+ "21913344"
+ ],
+ [
+ 1479914252,
+ "21759952"
+ ],
+ [
+ 1479914253,
+ "21759952"
+ ],
+ [
+ 1479914254,
+ "21759952"
+ ],
+ [
+ 1479914255,
+ "21759952"
+ ],
+ [
+ 1479914256,
+ "21759952"
+ ],
+ [
+ 1479914257,
+ "22396248"
+ ],
+ [
+ 1479914258,
+ "22396248"
+ ],
+ [
+ 1479914259,
+ "22396248"
+ ],
+ [
+ 1479914260,
+ "22396248"
+ ],
+ [
+ 1479914261,
+ "22396248"
+ ],
+ [
+ 1479914262,
+ "23019968"
+ ],
+ [
+ 1479914263,
+ "23019968"
+ ],
+ [
+ 1479914264,
+ "23019968"
+ ],
+ [
+ 1479914265,
+ "23019968"
+ ],
+ [
+ 1479914266,
+ "23019968"
+ ],
+ [
+ 1479914267,
+ "22769760"
+ ],
+ [
+ 1479914268,
+ "22769760"
+ ],
+ [
+ 1479914269,
+ "22769760"
+ ],
+ [
+ 1479914270,
+ "22769760"
+ ]
+ ]
+ },
+ "node_memory_heap_total_bytes": {
+ "slow-node:8000": [
+ [
+ 1479914177,
+ "41922560"
+ ],
+ [
+ 1479914178,
+ "41922560"
+ ],
+ [
+ 1479914179,
+ "41922560"
+ ],
+ [
+ 1479914180,
+ "41922560"
+ ],
+ [
+ 1479914181,
+ "41922560"
+ ],
+ [
+ 1479914182,
+ "42971136"
+ ],
+ [
+ 1479914183,
+ "42971136"
+ ],
+ [
+ 1479914184,
+ "42971136"
+ ],
+ [
+ 1479914185,
+ "42971136"
+ ],
+ [
+ 1479914186,
+ "42971136"
+ ],
+ [
+ 1479914187,
+ "29339648"
+ ],
+ [
+ 1479914188,
+ "29339648"
+ ],
+ [
+ 1479914189,
+ "29339648"
+ ],
+ [
+ 1479914190,
+ "29339648"
+ ],
+ [
+ 1479914191,
+ "29339648"
+ ],
+ [
+ 1479914192,
+ "36679680"
+ ],
+ [
+ 1479914193,
+ "36679680"
+ ],
+ [
+ 1479914194,
+ "36679680"
+ ],
+ [
+ 1479914195,
+ "36679680"
+ ],
+ [
+ 1479914196,
+ "36679680"
+ ],
+ [
+ 1479914197,
+ "30388224"
+ ],
+ [
+ 1479914198,
+ "30388224"
+ ],
+ [
+ 1479914199,
+ "30388224"
+ ],
+ [
+ 1479914200,
+ "30388224"
+ ],
+ [
+ 1479914201,
+ "30388224"
+ ],
+ [
+ 1479914202,
+ "31436800"
+ ],
+ [
+ 1479914203,
+ "31436800"
+ ],
+ [
+ 1479914204,
+ "31436800"
+ ],
+ [
+ 1479914205,
+ "31436800"
+ ],
+ [
+ 1479914206,
+ "31436800"
+ ],
+ [
+ 1479914207,
+ "30388224"
+ ],
+ [
+ 1479914208,
+ "30388224"
+ ],
+ [
+ 1479914209,
+ "30388224"
+ ],
+ [
+ 1479914210,
+ "30388224"
+ ],
+ [
+ 1479914211,
+ "30388224"
+ ],
+ [
+ 1479914212,
+ "31436800"
+ ],
+ [
+ 1479914213,
+ "31436800"
+ ],
+ [
+ 1479914214,
+ "31436800"
+ ],
+ [
+ 1479914215,
+ "31436800"
+ ],
+ [
+ 1479914216,
+ "31436800"
+ ],
+ [
+ 1479914217,
+ "31436800"
+ ],
+ [
+ 1479914218,
+ "31436800"
+ ],
+ [
+ 1479914219,
+ "31436800"
+ ],
+ [
+ 1479914220,
+ "31436800"
+ ],
+ [
+ 1479914221,
+ "31436800"
+ ],
+ [
+ 1479914222,
+ "28291072"
+ ],
+ [
+ 1479914223,
+ "28291072"
+ ],
+ [
+ 1479914224,
+ "28291072"
+ ],
+ [
+ 1479914225,
+ "28291072"
+ ],
+ [
+ 1479914226,
+ "28291072"
+ ],
+ [
+ 1479914227,
+ "29339648"
+ ],
+ [
+ 1479914228,
+ "29339648"
+ ],
+ [
+ 1479914229,
+ "29339648"
+ ],
+ [
+ 1479914230,
+ "29339648"
+ ],
+ [
+ 1479914231,
+ "29339648"
+ ],
+ [
+ 1479914232,
+ "29339648"
+ ],
+ [
+ 1479914233,
+ "29339648"
+ ],
+ [
+ 1479914234,
+ "29339648"
+ ],
+ [
+ 1479914235,
+ "29339648"
+ ],
+ [
+ 1479914236,
+ "29339648"
+ ],
+ [
+ 1479914237,
+ "30388224"
+ ],
+ [
+ 1479914238,
+ "30388224"
+ ],
+ [
+ 1479914239,
+ "30388224"
+ ],
+ [
+ 1479914240,
+ "30388224"
+ ],
+ [
+ 1479914241,
+ "30388224"
+ ],
+ [
+ 1479914242,
+ "29339648"
+ ],
+ [
+ 1479914243,
+ "29339648"
+ ],
+ [
+ 1479914244,
+ "29339648"
+ ],
+ [
+ 1479914245,
+ "29339648"
+ ],
+ [
+ 1479914246,
+ "29339648"
+ ],
+ [
+ 1479914247,
+ "31436800"
+ ],
+ [
+ 1479914248,
+ "31436800"
+ ],
+ [
+ 1479914249,
+ "31436800"
+ ],
+ [
+ 1479914250,
+ "31436800"
+ ],
+ [
+ 1479914251,
+ "31436800"
+ ],
+ [
+ 1479914252,
+ "30388224"
+ ],
+ [
+ 1479914253,
+ "30388224"
+ ],
+ [
+ 1479914254,
+ "30388224"
+ ],
+ [
+ 1479914255,
+ "30388224"
+ ],
+ [
+ 1479914256,
+ "30388224"
+ ],
+ [
+ 1479914257,
+ "30388224"
+ ],
+ [
+ 1479914258,
+ "30388224"
+ ],
+ [
+ 1479914259,
+ "30388224"
+ ],
+ [
+ 1479914260,
+ "30388224"
+ ],
+ [
+ 1479914261,
+ "30388224"
+ ],
+ [
+ 1479914262,
+ "31436800"
+ ],
+ [
+ 1479914263,
+ "31436800"
+ ],
+ [
+ 1479914264,
+ "31436800"
+ ],
+ [
+ 1479914265,
+ "31436800"
+ ],
+ [
+ 1479914266,
+ "31436800"
+ ],
+ [
+ 1479914267,
+ "34582528"
+ ],
+ [
+ 1479914268,
+ "34582528"
+ ],
+ [
+ 1479914269,
+ "34582528"
+ ],
+ [
+ 1479914270,
+ "34582528"
+ ]
+ ]
+ }
+ }
+}
diff --git a/spikes/leak/package.json b/spikes/leak/package.json
index d40844fb..02c477c9 100644
--- a/spikes/leak/package.json
+++ b/spikes/leak/package.json
@@ -7,13 +7,20 @@
"dependencies": {
"artillery": "^1.5.0-17",
"clone": "^2.0.0",
+ "date.js": "^0.3.1",
"epimetheus": "^1.0.46",
"good": "^7.0.2",
"good-console": "^6.3.1",
"good-squeeze": "^5.0.1",
+ "got": "^6.6.3",
"hapi": "^15.2.0",
+ "hapi-webpack-dev-plugin": "^1.2.0",
+ "internet-timestamp": "^0.0.1",
+ "lodash.get": "^4.4.2",
+ "minimist": "^1.2.0",
"pretty-hrtime": "^1.0.3",
"prom-client": "^6.1.2",
- "require-dir": "^0.3.1"
+ "require-dir": "^0.3.1",
+ "webpack": "^1.13.3"
}
}
diff --git a/spikes/leak/prometheus.yml b/spikes/leak/prometheus.yml
index 928ddc77..c164b348 100644
--- a/spikes/leak/prometheus.yml
+++ b/spikes/leak/prometheus.yml
@@ -3,7 +3,7 @@ scrape_configs:
# Override the global default and scrape targets from this job every 5 seconds.
scrape_interval: 1s
static_configs:
- - targets: ['fast-node:8000']
+ - targets: ['fast-node:8000', 'another-fast-node:8000']
- job_name: 'leak-slow'
# Override the global default and scrape targets from this job every 5 seconds.
scrape_interval: 1s
diff --git a/spikes/leak/readme.md b/spikes/leak/readme.md
index be893180..e69de29b 100644
--- a/spikes/leak/readme.md
+++ b/spikes/leak/readme.md
@@ -1,16 +0,0 @@
-GET /mem
-GET /cpu
-
- cpu-node:
- build: .
- environment:
- - TYPE=node
- ports:
- - "8003:8000"
- cpu-artillery:
- build: .
- environment:
- - TYPE=artillery
- - MODE=cpu
- depends_on:
- - cpu-node
diff --git a/spikes/leak/scripts/metrics.js b/spikes/leak/scripts/metrics.js
new file mode 100644
index 00000000..2c78ea65
--- /dev/null
+++ b/spikes/leak/scripts/metrics.js
@@ -0,0 +1,78 @@
+process.on('unhandledRejection', (reason) => {
+ throw reason
+});
+
+const argv = require('minimist')(process.argv.slice(2));
+const get = require('lodash.get');
+const date = require('date.js');
+const timestamp = require('internet-timestamp');
+const got = require('got');
+const url = require('url');
+
+const conf = {
+ query: argv.query,
+ ago: argv.ago || '1h',
+ step: argv.step || '1s',
+ hostname: argv.hostname || 'localhost',
+};
+
+if (!conf.query) {
+ console.error(`
+Usage: node metrics.js --query={metric} --step={step} --ago={ago}
+ node metrics.js --query=node_memory_heap_used_bytes --query=node_memory_heap_total_bytes
+ `.trim());
+
+ process.exit(1);
+}
+
+// query=node_memory_heap_used_bytes&end=147989905368&step=15s
+const end = timestamp(new Date());
+const start = timestamp(date(`${conf.ago} ago`));
+
+Promise.all(conf.query.map((query) => {
+ return got(url.format({
+ protocol: 'http:',
+ slashes: true,
+ port: '9090',
+ hostname: conf.hostname,
+ pathname: '/api/v1/query_range',
+ query: {
+ query: query,
+ end: end,
+ step: conf.step,
+ start: start
+ }
+ }));
+})).then((res) => {
+ return res.reduce((sum, r) => {
+ const {
+ data: {
+ result
+ }
+ } = JSON.parse(r.body);
+
+ return result.reduce((sum, inst) => {
+ const {
+ values,
+ metric: {
+ instance,
+ job,
+ __name__
+ }
+ } = inst;
+
+ const oldJob = get(sum, job, {});
+ const oldQuery = get(sum, `${job}.${__name__}`, {});
+
+ return Object.assign(sum, {
+ [job]: Object.assign(oldJob, {
+ [__name__]: Object.assign(oldQuery, {
+ [instance]: values
+ })
+ })
+ })
+ }, sum);
+ }, {});
+}).then((res) => {
+ console.log(JSON.stringify(res, null, 2));
+});
diff --git a/spikes/leak/start.js b/spikes/leak/scripts/start.js
similarity index 72%
rename from spikes/leak/start.js
rename to spikes/leak/scripts/start.js
index 69ddcb1e..1c3e3331 100644
--- a/spikes/leak/start.js
+++ b/spikes/leak/scripts/start.js
@@ -1,4 +1,5 @@
const cp = require('child_process');
+const path = require('path');
const TYPE = process.env.TYPE;
const MODE = process.env.MODE;
@@ -12,17 +13,15 @@ Usage: TYPE={type} node start.js
process.exit(1);
}
-
const handler = ({
node: () => {
- console.log('node src/index.js');
return cp.exec('node src/index.js', {
cwd: __dirname
})
},
artillery: () => {
- console.log(`./node_modules/.bin/artillery run ${__dirname}/artillery-${MODE}.yml`);
- return cp.exec(`./node_modules/.bin/artillery run ${__dirname}/artillery-${MODE}.yml`)
+ const conf = path.join(__dirname, '../artillery/artillery-${MODE}.yml');
+ return cp.exec(`../node_modules/.bin/artillery run ${conf}`)
}
})[TYPE];
diff --git a/spikes/leak/src/client/actions.js b/spikes/leak/src/client/actions.js
new file mode 100644
index 00000000..852bf7ea
--- /dev/null
+++ b/spikes/leak/src/client/actions.js
@@ -0,0 +1,82 @@
+const take = require('lodash.take');
+
+const actions = {
+ 'UPDATE_STATS': (state, action) => {
+ const data = (state[action.subscription] || {
+ cpu: [],
+ mem: [],
+ disk: []
+ });
+
+ const newData = ['cpu', 'mem', 'disk'].reduce((sum, key) => {
+ const item = {
+ ...action.payload.stats[key],
+ when: action.payload.when
+ };
+
+ const prepended = [item].concat(data[key]);
+
+ return {
+ ...sum,
+ [key]: take(prepended, state.windowSize)
+ };
+ }, {});
+
+ return {
+ ...state,
+ [action.subscription]: newData
+ };
+ }
+};
+
+module.exports = (state, action) => {
+ return !actions[action.type] ? state : actions[action.type](state, action);
+};
+
+module.exports.subscribe = (id) => (dispatch, getState) => {
+ const {
+ ws
+ } = getState();
+
+ const p = new Promise((resolve, reject) => {
+ ws.subscribe(`/stats/${id}`, (update, flag) => {
+ dispatch({
+ type: 'UPDATE_STATS',
+ payload: update,
+ subscription: id
+ });
+ }, (err) => {
+ if (err) {
+ return reject(err);
+ }
+
+ resolve();
+ });
+ });
+
+ return dispatch({
+ type: 'SUBSCRIBE',
+ payload: p
+ });
+};
+
+module.exports.unsubscribe = (id) => (dispatch, getState) => {
+ const {
+ ws
+ } = getState();
+
+ const p = new Promise((resolve, reject) => {
+ ws.unsubscribe(`/stats/${id}`, null, (err) => {
+ if (err) {
+ return reject(err);
+ }
+
+ resolve();
+ });
+ });
+
+ return dispatch({
+ type: 'UNSUBSCRIBE',
+ payload: p
+ });
+};
\ No newline at end of file
diff --git a/spikes/leak/src/client/chart/base.js b/spikes/leak/src/client/chart/base.js
new file mode 100644
index 00000000..d3c52441
--- /dev/null
+++ b/spikes/leak/src/client/chart/base.js
@@ -0,0 +1,71 @@
+const buildArray = require('build-array');
+const Chart = require('chart.js');
+const React = require('react');
+
+module.exports = React.createClass({
+ ref: function(name) {
+ this._refs = this._refs || {};
+
+ return (el) => {
+ this._refs[name] = el;
+ };
+ },
+ componentDidMount: function() {
+ const {
+ datasets = [],
+ labels = 0,
+ stacked = false,
+ xAxe = false,
+ yAxe = false,
+ legend = false
+ } = this.props;
+
+ const _labels = !Array.isArray(labels)
+ ? buildArray(labels).map((v, i) => '')
+ : labels;
+
+ this._chart = new Chart(this._refs.component, {
+ type: 'bar',
+ stacked: stacked,
+ responsive: true,
+ options: {
+ scales: {
+ xAxes: [{
+ display: xAxe,
+ stacked: stacked
+ }],
+ yAxes: [{
+ display: yAxe,
+ stacked: stacked
+ }]
+ },
+ legend: {
+ display: legend
+ }
+ },
+ data: {
+ labels:
+ datasets: datasets
+ }
+ });
+ },
+ componentWillReceiveProps: function(nextProps) {
+ const {
+ datasets = [],
+ labels = 0
+ } = this.props;
+
+ this._chart.data.datasets = datasets;
+ this._chart.data.labels = buildArray(labels).map((v, i) => '');
+ this._chart.update(0);
+ },
+ render: function() {
+ return (
+
+ );
+ }
+});
diff --git a/spikes/leak/src/client/chart/cpu.js b/spikes/leak/src/client/chart/cpu.js
new file mode 100644
index 00000000..6df20000
--- /dev/null
+++ b/spikes/leak/src/client/chart/cpu.js
@@ -0,0 +1,31 @@
+const buildArray = require('build-array');
+const Chart = require('./base');
+const React = require('react');
+
+const colors = {
+ user: 'rgb(255, 99, 132)',
+ sys: 'rgb(255, 159, 64)'
+};
+
+module.exports = ({
+ data = {},
+ windowSize
+}) => {
+ const datasets = ['user', 'sys'].map((key) => {
+ return {
+ label: key,
+ backgroundColor: colors[key],
+ data: buildArray(windowSize).map((v, i) => ((data[i] || {})[key] || 0))
+ };
+ });
+
+ return (
+