Skip to content

Instantly share code, notes, and snippets.

@sidorares
Last active March 29, 2022 12:30
Show Gist options
  • Star 4 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sidorares/ffe9ee9c423f763e3b6b to your computer and use it in GitHub Desktop.
Save sidorares/ffe9ee9c423f763e3b6b to your computer and use it in GitHub Desktop.
node-mysql2 benchmarks

Benchmarks of node-mysql vs node-mysql2 drivers

Test1:

for each http request, query first 3 rows of mysql.user table and render results using jade template.

Notes: This tests column definition parser (user table has 43 columns), row parser (3x43 values) and access time to result. Also this is test of how well event loop, GC, http parser and mysql driver work together. To compare mysql overhead with http + jade rendering + data transfer, there is another endpoint that renders exactly the same rows of data from memory without fetching them from mysql server.

Environment:

node http server and mysql server sit on the same machine. Load test from laptop over 1gb ethernet (wrk 3.1.1).
6 cores Intel(R) Xeon(R) CPU E5-1650 0 @ 3.20GHz, 64G RAM
Mysql server version: 5.5.40-MariaDB MariaDB Server
node 0.10.33
fedora Linux 3.17.6-200.fc20.x86_64 #1 SMP

Results (also see raw json):

Summary:

  • node-mysql: peaks 6000 rps, first timeout errors at 110 conns, latency99 60ms at 110 conns
  • node-mysql2: peak 15000 rps, first timeout errors at 150 conns, latency99 30ms at 150 conn
  • memory: peak 46000 rps, no erros, latency99 20ms at 300 conns (7ms at 120 conn)

average rps

graph-rps-avg

avg latency

graph-latency-avg

99% latency

graph-latency99_

<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.2.1/Chart.bundle.min.js"></script>
<script src="results-mysql-2rows.js"></script>
<script src="results-mysql2-2rows.js"></script>
<script>
//Chart.defaults.global.elements.line.borderWidth = 0.5;
//borderColor
var benchDataset = window.graphData.filter(bench => bench.result).map( (bench) => {
return {
label: bench.opts.rate,
fill: false,
lineTension: 0.3,
lineWidth: 0.1,
pointBorderWidth: 0,
pointRadius: 1,
borderColor: "rgba(75,192,192,0.9)",
borderWidth: 0.8,
/*
fill: false,
lineTension: 0.1,
backgroundColor: "rgba(75,192,192,0.4)",
borderColor: "rgba(75,192,192,1)",
borderCapStyle: 'butt',
borderDash: [],
borderDashOffset: 0.0,
borderJoinStyle: 'miter',
pointBorderColor: "rgba(75,192,192,1)",
pointBackgroundColor: "#fff",
pointBorderWidth: 1,
pointHoverRadius: 5,
pointHoverBackgroundColor: "rgba(75,192,192,1)",
pointHoverBorderColor: "rgba(220,220,220,1)",
pointHoverBorderWidth: 2,
pointRadius: 1,
pointHitRadius: 10,
spanGaps: false,
*/
data: bench.result.histogram.map( (h) => { return { x: h.percentile, y: h.latency} } )
};
});
var benchDataset2 = window.graphData2.filter(bench => bench.result).map( (bench) => {
return {
label: bench.opts.rate,
fill: false,
lineTension: 0.3,
lineWidth: 0.1,
pointBorderWidth: 0,
pointRadius: 1,
borderColor: "rgba(175,0,192,0.9)",
borderWidth: 0.8,
data: bench.result.histogram.map( (h) => { return { x: h.percentile, y: h.latency} } )
};
});
benchDataset = benchDataset.concat(benchDataset2);
var data2 = {
//labels: window.graphData[0].result.histogram.map( (h) => h.percentile ),
datasets: benchDataset,
options: {
scales: {
xAxes: [{
type: 'linear',
position: 'bottom'
}]
}
}
};
$(document).ready(function(){
var ctx = document.getElementById("myChart").getContext("2d");
/*
var myNewChart = Chart.Line(ctx, {
type: 'line',
data: data2
});
*/
var chart = new Chart(ctx, {
type: 'line',
data: {
datasets: benchDataset
},
options: {
scales: {
xAxes: [{
type: 'linear',
position: 'bottom'
}],
yAxes: [{
//type: "logarithmic",
min: 0,
max: 10000
}]
}
}
});
$('#rateSelect').on('input change', function(ev) {
var rate = Number(ev.target.value);
var closestRes = null;
window.graphData.forEach(function(bench) {
if (!closestRes) {
closestRes = bench;
}
if (Math.abs(Number(bench.opts.rate) - rate) < Math.abs(Number(closestRes.opts.rate) - rate)) {
closestRes = bench;
}
});
var closestRes1 = null;
window.graphData2.forEach(function(bench) {
if (!closestRes1) {
closestRes1 = bench;
}
if (Math.abs(Number(bench.opts.rate) - rate) < Math.abs(Number(closestRes1.opts.rate) - rate)) {
closestRes1 = bench;
}
});
chart.data.datasets = [{
label: 'mysql2 ' + closestRes.opts.rate,
fill: false,
lineTension: 0.3,
lineWidth: 0.1,
pointBorderWidth: 0,
pointRadius: 1,
borderColor: "rgba(175,200,192,0.9)",
borderWidth: 0.8,
data: closestRes.result.histogram.map( (h) => { return { x: h.percentile, y: h.latency} } )
}, {
label: 'mysql ' + closestRes.opts.rate,
fill: false,
lineTension: 0.3,
lineWidth: 0.1,
pointBorderWidth: 0,
pointRadius: 1,
borderColor: "rgba(175,0,192,0.9)",
borderWidth: 0.8,
data: closestRes1.result.histogram.map( (h) => { return { x: h.percentile, y: h.latency} } )
}];
chart.data.datasets[0].data.push([{x: 1.001, y: 20000}])
chart.update(true);
});
});
</script>
</head>
<body>
<h1>Live Updating Chart.js</h1>
<canvas id="myChart" width="400" height="150"></canvas>
<input id="rateSelect" type="range" id="weight" min="700" value="500" max="1200" step="50" style="width: 100%">
</body>
</html>
var cluster = require('cluster');
var http = require('http');
var numCPUs = require('os').cpus().length;
console.log('CPUS: ', numCPUs);
if (cluster.isMaster) {
// Fork workers.
for (var i = 0; i < numCPUs; i++) {
cluster.fork();
}
cluster.on('exit', function(worker, code, signal) {
console.log('worker ' + worker.process.pid + ' died');
});
} else {
var http = require('http');
var fs = require('fs');
var url = require('url');
var jade = require('jade');
var template = require('fs').readFileSync(__dirname + '/template.jade', 'ascii');
var render = jade.compile(template);
var port = process.env.PORT;
var driver = require('mysql2');
//var driver = require('mysql');
var conn = driver.createPool({ user: 'root', password: 'new-password', database: 'mysql', connectionLimit: 100, socketPath: '/var/lib/mysql/mysql.sock' });
console.log('Hello from worker!');
var prefetchRows = [];
conn.query('select * from user', function(err, rows) {
prefetchRows = rows;
//console.log(rows[0]);
console.log('Prefetch done! len=', rows.length);
});
var e500 = function(r) {
r.writeHead(500);
r.end();
};
var ok200 = function(r,data) {
var body = render({ records: data });
r.writeHead(200, {
'Content-Length': body.length,
'Content-Type': 'text/html' }
);
r.write(body);
r.end();
};
http.createServer(function(req, res) {
var q = url.parse(req.url, true);
var sql = q.query.q;
var n = q.query.n;
if (q.pathname == '/memory') {
//console.log('====', parseInt(n));
ok200(res,prefetchRows.slice(0, parseInt(n)));
} else if (q.pathname == '/query') {
conn.query(sql, function(err, rows) {
//conn.execute(sql, function(err, rows) {
if (err)
return e500(res);
ok200(res,rows);
});
} else {
res.writeHead(404);
res.end();
}
}).listen(port || 1234);
};
var toMs = function(s) {
if (s.slice('-2') == 'us')
return parseFloat(s.slice(0, -2))/1000;
if (s.slice('-2') == 'ms')
return parseFloat(s.slice(0, -2));
//if (s.slice('-1') == 's')
return parseFloat(s)*1000;
}
var data = require(process.argv[2]);
data.runs.forEach(function(run) {
var c = run.wrk.match(/ -c([0-9]+) /)[1];
console.log(c, run.requestsPerSec, toMs(run.latencyAvg), toMs(run.latencyStdev), toMs(run.latency99), run.non2xx3xx||0);
});
{
"description": "memory, node 0.10.33, 12 x Intel(R) Xeon(R) CPU E5-1650 0 @ 3.20GHz, cluster x 12",
"runs": [
{
"transferPerSec": "1.50MB",
"requestsPerSec": 4835.56,
"requestsTotal": 580338,
"durationActual": "2.00m",
"transferTotal": "179.87MB",
"latencyAvg": "163.36ms",
"latencyStdev": "190.55ms",
"latencyMax": "402.69ms",
"latencyStdevPerc": 62.69,
"rpsAvg": "1.30k",
"rpsStdev": "1.22k",
"rpsMax": "4.33k",
"rpsStdevPerc": 38.86,
"latency50": "529.00us",
"latency75": "401.99ms",
"latency90": "402.69ms",
"latency99": "402.69ms",
"connections": 4,
"wrk": "wrk -t4 -c4 -d120s --timeout 30s --latency http://10.0.3.100:1234/memory?n=3"
},
{
"transferPerSec": "1.84MB",
"requestsPerSec": 5927.6,
"requestsTotal": 711366,
"durationActual": "2.00m",
"transferTotal": "220.48MB",
"latencyAvg": "111.82ms",
"latencyStdev": "176.76ms",
"latencyMax": "602.87ms",
"latencyStdevPerc": 87.3,
"rpsAvg": "1.59k",
"rpsStdev": "1.29k",
"rpsMax": "4.33k",
"rpsStdevPerc": 45.99,
"latency50": "474.00us",
"latency75": "201.64ms",
"latency90": "402.69ms",
"latency99": "602.87ms",
"connections": 5,
"wrk": "wrk -t4 -c5 -d120s --timeout 30s --latency http://10.0.3.100:1234/memory?n=3"
},
{
"transferPerSec": "2.18MB",
"requestsPerSec": 7037.1,
"requestsTotal": 844519,
"durationActual": "2.00m",
"transferTotal": "261.75MB",
"latencyAvg": "88.48ms",
"latencyStdev": "157.76ms",
"latencyMax": "402.04ms",
"latencyStdevPerc": 81.59,
"rpsAvg": "1.87k",
"rpsStdev": "1.19k",
"rpsMax": "4.44k",
"rpsStdevPerc": 61.79,
"latency50": "450.00us",
"latency75": "201.16ms",
"latency90": "402.02ms",
"latency99": "402.04ms",
"connections": 6,
"wrk": "wrk -t4 -c6 -d120s --timeout 30s --latency http://10.0.3.100:1234/memory?n=3"
},
{
"transferPerSec": "2.29MB",
"requestsPerSec": 7383.87,
"requestsTotal": 886063,
"durationActual": "2.00m",
"transferTotal": "274.63MB",
"latencyAvg": "40.66ms",
"latencyStdev": "84.70ms",
"latencyMax": "260.49ms",
"latencyStdevPerc": 81.37,
"rpsAvg": "1.96k",
"rpsStdev": "1.04k",
"rpsMax": "4.33k",
"rpsStdevPerc": 72.04,
"latency50": "456.00us",
"latency75": "568.00us",
"latency90": "202.04ms",
"latency99": "260.49ms",
"connections": 7,
"wrk": "wrk -t4 -c7 -d120s --timeout 30s --latency http://10.0.3.100:1234/memory?n=3"
},
{
"transferPerSec": "4.45MB",
"requestsPerSec": 14350.31,
"requestsTotal": 1722032,
"durationActual": "2.00m",
"transferTotal": "533.73MB",
"latencyAvg": "8.76ms",
"latencyStdev": "40.12ms",
"latencyMax": "202.94ms",
"latencyStdevPerc": 95.88,
"rpsAvg": "3.79k",
"rpsStdev": "1.51k",
"rpsMax": "6.44k",
"rpsStdevPerc": 65.96,
"latency50": "427.00us",
"latency75": "487.00us",
"latency90": "620.00us",
"latency99": "202.94ms",
"connections": 8,
"wrk": "wrk -t4 -c8 -d120s --timeout 30s --latency http://10.0.3.100:1234/memory?n=3"
},
{
"transferPerSec": "4.12MB",
"requestsPerSec": 13285.96,
"requestsTotal": 1594313,
"durationActual": "2.00m",
"transferTotal": "494.15MB",
"latencyAvg": "31.82ms",
"latencyStdev": "122.56ms",
"latencyMax": "603.33ms",
"latencyStdevPerc": 93.19,
"rpsAvg": "3.51k",
"rpsStdev": "1.65k",
"rpsMax": "6.67k",
"rpsStdevPerc": 65.99,
"latency50": "385.00us",
"latency75": "510.00us",
"latency90": "0.98ms",
"latency99": "603.33ms",
"connections": 9,
"wrk": "wrk -t4 -c9 -d120s --timeout 30s --latency http://10.0.3.100:1234/memory?n=3"
},
{
"transferPerSec": "4.55MB",
"requestsPerSec": 14692.09,
"requestsTotal": 1763048,
"durationActual": "2.00m",
"transferTotal": "546.45MB",
"latencyAvg": "6.50ms",
"latencyStdev": "34.38ms",
"latencyMax": "203.01ms",
"latencyStdevPerc": 97.01,
"rpsAvg": "3.88k",
"rpsStdev": "1.36k",
"rpsMax": "6.33k",
"rpsStdevPerc": 65.54,
"latency50": "453.00us",
"latency75": "491.00us",
"latency90": "602.00us",
"latency99": "201.94ms",
"connections": 10,
"wrk": "wrk -t4 -c10 -d120s --timeout 30s --latency http://10.0.3.100:1234/memory?n=3"
},
{
"transferPerSec": "10.15MB",
"requestsPerSec": 32751.31,
"requestsTotal": 3930149,
"durationActual": "2.00m",
"transferTotal": "1.19GB",
"latencyAvg": "655.77us",
"latencyStdev": "5.32ms",
"latencyMax": "203.58ms",
"latencyStdevPerc": 99.9,
"rpsAvg": "8.65k",
"rpsStdev": "2.20k",
"rpsMax": "14.78k",
"rpsStdevPerc": 65.87,
"latency50": "445.00us",
"latency75": "502.00us",
"latency90": "759.00us",
"latency99": "1.90ms",
"connections": 20,
"wrk": "wrk -t4 -c20 -d120s --timeout 30s --latency http://10.0.3.100:1234/memory?n=3"
},
{
"transferPerSec": "11.32MB",
"requestsPerSec": 36534.33,
"requestsTotal": 4384103,
"durationActual": "2.00m",
"transferTotal": "1.33GB",
"latencyAvg": "783.31us",
"latencyStdev": "4.93ms",
"latencyMax": "401.98ms",
"latencyStdevPerc": 99.84,
"rpsAvg": "9.66k",
"rpsStdev": "2.34k",
"rpsMax": "17.78k",
"rpsStdevPerc": 66.44,
"latency50": "496.00us",
"latency75": "741.00us",
"latency90": "1.09ms",
"latency99": "2.55ms",
"connections": 30,
"wrk": "wrk -t4 -c30 -d120s --timeout 30s --latency http://10.0.3.100:1234/memory?n=3"
},
{
"transferPerSec": "11.72MB",
"requestsPerSec": 37800.99,
"requestsTotal": 4536088,
"durationActual": "2.00m",
"transferTotal": "1.37GB",
"latencyAvg": "1.07ms",
"latencyStdev": "6.43ms",
"latencyMax": "603.53ms",
"latencyStdevPerc": 99.81,
"rpsAvg": "9.99k",
"rpsStdev": "2.57k",
"rpsMax": "21.22k",
"rpsStdevPerc": 69.55,
"latency50": "623.00us",
"latency75": "1.06ms",
"latency90": "1.78ms",
"latency99": "4.10ms",
"connections": 40,
"wrk": "wrk -t4 -c40 -d120s --timeout 30s --latency http://10.0.3.100:1234/memory?n=3"
},
{
"transferPerSec": "12.30MB",
"requestsPerSec": 39682.38,
"requestsTotal": 4761870,
"durationActual": "2.00m",
"transferTotal": "1.44GB",
"latencyAvg": "1.21ms",
"latencyStdev": "6.13ms",
"latencyMax": "205.21ms",
"latencyStdevPerc": 99.82,
"rpsAvg": "10.48k",
"rpsStdev": "2.40k",
"rpsMax": "19.56k",
"rpsStdevPerc": 66.44,
"latency50": "726.00us",
"latency75": "1.34ms",
"latency90": "1.96ms",
"latency99": "4.27ms",
"connections": 50,
"wrk": "wrk -t4 -c50 -d120s --timeout 30s --latency http://10.0.3.100:1234/memory?n=3"
},
{
"transferPerSec": "11.93MB",
"requestsPerSec": 38476.73,
"requestsTotal": 4617184,
"durationActual": "2.00m",
"transferTotal": "1.40GB",
"latencyAvg": "1.67ms",
"latencyStdev": "9.61ms",
"latencyMax": "607.34ms",
"latencyStdevPerc": 99.76,
"rpsAvg": "10.19k",
"rpsStdev": "2.63k",
"rpsMax": "23.89k",
"rpsStdevPerc": 67.98,
"latency50": "0.94ms",
"latency75": "1.73ms",
"latency90": "2.79ms",
"latency99": "6.00ms",
"connections": 60,
"wrk": "wrk -t4 -c60 -d120s --timeout 30s --latency http://10.0.3.100:1234/memory?n=3"
},
{
"transferPerSec": "11.88MB",
"requestsPerSec": 38322.83,
"requestsTotal": 4598712,
"durationActual": "2.00m",
"transferTotal": "1.39GB",
"latencyAvg": "1.82ms",
"latencyStdev": "8.21ms",
"latencyMax": "403.01ms",
"latencyStdevPerc": 99.79,
"rpsAvg": "10.12k",
"rpsStdev": "2.16k",
"rpsMax": "20.89k",
"rpsStdevPerc": 69.15,
"latency50": "1.31ms",
"latency75": "1.88ms",
"latency90": "2.66ms",
"latency99": "5.33ms",
"connections": 70,
"wrk": "wrk -t4 -c70 -d120s --timeout 30s --latency http://10.0.3.100:1234/memory?n=3"
},
{
"transferPerSec": "12.22MB",
"requestsPerSec": 39426.05,
"requestsTotal": 4731122,
"durationActual": "2.00m",
"transferTotal": "1.43GB",
"latencyAvg": "2.07ms",
"latencyStdev": "8.51ms",
"latencyMax": "602.94ms",
"latencyStdevPerc": 99.76,
"rpsAvg": "10.42k",
"rpsStdev": "2.04k",
"rpsMax": "19.78k",
"rpsStdevPerc": 68.75,
"latency50": "1.43ms",
"latency75": "2.22ms",
"latency90": "3.30ms",
"latency99": "6.74ms",
"connections": 80,
"wrk": "wrk -t4 -c80 -d120s --timeout 30s --latency http://10.0.3.100:1234/memory?n=3"
},
{
"transferPerSec": "13.04MB",
"requestsPerSec": 42070.55,
"requestsTotal": 5048435,
"durationActual": "2.00m",
"transferTotal": "1.53GB",
"latencyAvg": "2.40ms",
"latencyStdev": "7.94ms",
"latencyMax": "210.04ms",
"latencyStdevPerc": 99.62,
"rpsAvg": "11.12k",
"rpsStdev": "2.24k",
"rpsMax": "21.67k",
"rpsStdevPerc": 66.72,
"latency50": "1.79ms",
"latency75": "2.50ms",
"latency90": "4.01ms",
"latency99": "7.93ms",
"connections": 100,
"wrk": "wrk -t4 -c100 -d120s --timeout 30s --latency http://10.0.3.100:1234/memory?n=3"
},
{
"transferPerSec": "14.11MB",
"requestsPerSec": 45538.3,
"requestsTotal": 5464573,
"durationActual": "2.00m",
"transferTotal": "1.65GB",
"latencyAvg": "2.65ms",
"latencyStdev": "8.73ms",
"latencyMax": "605.04ms",
"latencyStdevPerc": 99.75,
"rpsAvg": "12.03k",
"rpsStdev": "1.71k",
"rpsMax": "22.00k",
"rpsStdevPerc": 69.06,
"latency50": "2.05ms",
"latency75": "2.78ms",
"latency90": "3.90ms",
"latency99": "7.72ms",
"connections": 120,
"wrk": "wrk -t4 -c120 -d120s --timeout 30s --latency http://10.0.3.100:1234/memory?n=3"
},
{
"transferPerSec": "14.14MB",
"requestsPerSec": 45615.36,
"requestsTotal": 5473822,
"durationActual": "2.00m",
"transferTotal": "1.66GB",
"latencyAvg": "3.07ms",
"latencyStdev": "8.40ms",
"latencyMax": "606.51ms",
"latencyStdevPerc": 99.51,
"rpsAvg": "12.07k",
"rpsStdev": "1.67k",
"rpsMax": "34.00k",
"rpsStdevPerc": 72.25,
"latency50": "2.41ms",
"latency75": "3.24ms",
"latency90": "4.51ms",
"latency99": "8.82ms",
"connections": 140,
"wrk": "wrk -t4 -c140 -d120s --timeout 30s --latency http://10.0.3.100:1234/memory?n=3"
},
{
"transferPerSec": "13.10MB",
"requestsPerSec": 42270.25,
"requestsTotal": 5072400,
"durationActual": "2.00m",
"transferTotal": "1.54GB",
"latencyAvg": "3.92ms",
"latencyStdev": "11.45ms",
"latencyMax": "609.22ms",
"latencyStdevPerc": 99.38,
"rpsAvg": "11.15k",
"rpsStdev": "2.07k",
"rpsMax": "34.43k",
"rpsStdevPerc": 71.97,
"latency50": "3.18ms",
"latency75": "4.40ms",
"latency90": "5.98ms",
"latency99": "12.26ms",
"connections": 160,
"wrk": "wrk -t4 -c160 -d120s --timeout 30s --latency http://10.0.3.100:1234/memory?n=3"
},
{
"transferPerSec": "13.96MB",
"requestsPerSec": 45055.1,
"requestsTotal": 5406596,
"durationActual": "2.00m",
"transferTotal": "1.64GB",
"latencyAvg": "4.46ms",
"latencyStdev": "9.05ms",
"latencyMax": "609.70ms",
"latencyStdevPerc": 99.6,
"rpsAvg": "11.80k",
"rpsStdev": "1.55k",
"rpsMax": "34.62k",
"rpsStdevPerc": 73.78,
"latency50": "3.85ms",
"latency75": "4.50ms",
"latency90": "6.17ms",
"latency99": "10.66ms",
"connections": 200,
"wrk": "wrk -t4 -c200 -d120s --timeout 30s --latency http://10.0.3.100:1234/memory?n=3"
},
{
"transferPerSec": "13.78MB",
"requestsPerSec": 44457.97,
"requestsTotal": 5334927,
"durationActual": "2.00m",
"transferTotal": "1.61GB",
"latencyAvg": "5.76ms",
"latencyStdev": "13.44ms",
"latencyMax": "614.78ms",
"latencyStdevPerc": 99.25,
"rpsAvg": "11.55k",
"rpsStdev": "1.49k",
"rpsMax": "42.93k",
"rpsStdevPerc": 81.98,
"latency50": "4.66ms",
"latency75": "5.75ms",
"latency90": "8.32ms",
"latency99": "17.31ms",
"connections": 250,
"wrk": "wrk -t4 -c250 -d120s --timeout 30s --latency http://10.0.3.100:1234/memory?n=3"
},
{
"transferPerSec": "14.13MB",
"requestsPerSec": 45602.61,
"requestsTotal": 5472283,
"durationActual": "2.00m",
"transferTotal": "1.66GB",
"latencyAvg": "6.60ms",
"latencyStdev": "9.96ms",
"latencyMax": "619.83ms",
"latencyStdevPerc": 97.79,
"rpsAvg": "11.76k",
"rpsStdev": "1.53k",
"rpsMax": "27.08k",
"rpsStdevPerc": 69.64,
"latency50": "4.97ms",
"latency75": "8.17ms",
"latency90": "12.25ms",
"latency99": "20.23ms",
"connections": 300,
"wrk": "wrk -t4 -c300 -d120s --timeout 30s --latency http://10.0.3.100:1234/memory?n=3"
}
]
}
{
"description": "node-mysql, node 0.10.33, 12 x Intel(R) Xeon(R) CPU E5-1650 0 @ 3.20GHz, cluster x 12",
"runs": [
{
"transferPerSec": "0.92MB",
"requestsPerSec": 2971.17,
"requestsTotal": 356541,
"durationActual": "2.00m",
"transferTotal": "110.51MB",
"latencyAvg": "2.17ms",
"latencyStdev": "12.51ms",
"latencyMax": "202.56ms",
"latencyStdevPerc": 99.61,
"rpsAvg": "785.47",
"rpsStdev": "179.27",
"rpsMax": "1.22k",
"rpsStdevPerc": 61.97,
"latency50": "1.28ms",
"latency75": "1.51ms",
"latency90": "1.86ms",
"latency99": "3.27ms",
"wrk": "wrk -t4 -c4 -d120s --timeout 30s --latency http://10.0.3.100:1234/query?q=select%20*%20from%20user%20limit%203"
},
{
"transferPerSec": "0.90MB",
"requestsPerSec": 2910.98,
"requestsTotal": 349318,
"durationActual": "2.00m",
"transferTotal": "108.27MB",
"latencyAvg": "2.91ms",
"latencyStdev": "17.30ms",
"latencyMax": "203.41ms",
"latencyStdevPerc": 99.26,
"rpsAvg": "768.81",
"rpsStdev": "187.92",
"rpsMax": "1.33k",
"rpsStdevPerc": 70.29,
"latency50": "1.31ms",
"latency75": "1.56ms",
"latency90": "1.92ms",
"latency99": "5.19ms",
"wrk": "wrk -t4 -c5 -d120s --timeout 30s --latency http://10.0.3.100:1234/query?q=select%20*%20from%20user%20limit%203"
},
{
"transferPerSec": "0.85MB",
"requestsPerSec": 2756.71,
"requestsTotal": 330810,
"durationActual": "2.00m",
"transferTotal": "102.53MB",
"latencyAvg": "3.46ms",
"latencyStdev": "19.67ms",
"latencyMax": "203.54ms",
"latencyStdevPerc": 99.04,
"rpsAvg": "727.64",
"rpsStdev": "198.73",
"rpsMax": "1.22k",
"rpsStdevPerc": 71.84,
"latency50": "1.38ms",
"latency75": "1.71ms",
"latency90": "2.17ms",
"latency99": "10.63ms",
"wrk": "wrk -t4 -c6 -d120s --timeout 30s --latency http://10.0.3.100:1234/query?q=select%20*%20from%20user%20limit%203"
},
{
"transferPerSec": "0.89MB",
"requestsPerSec": 2873.77,
"requestsTotal": 344855,
"durationActual": "2.00m",
"transferTotal": "106.89MB",
"latencyAvg": "3.18ms",
"latencyStdev": "18.67ms",
"latencyMax": "202.69ms",
"latencyStdevPerc": 99.13,
"rpsAvg": "758.49",
"rpsStdev": "187.21",
"rpsMax": "1.22k",
"rpsStdevPerc": 71.08,
"latency50": "1.33ms",
"latency75": "1.59ms",
"latency90": "1.94ms",
"latency99": "6.20ms",
"wrk": "wrk -t4 -c7 -d120s --timeout 30s --latency http://10.0.3.100:1234/query?q=select%20*%20from%20user%20limit%203"
},
{
"transferPerSec": "1.63MB",
"requestsPerSec": 5274.49,
"requestsTotal": 632940,
"durationActual": "2.00m",
"transferTotal": "196.18MB",
"latencyAvg": "1.70ms",
"latencyStdev": "5.31ms",
"latencyMax": "203.86ms",
"latencyStdevPerc": 99.82,
"rpsAvg": "1.39k",
"rpsStdev": "446.15",
"rpsMax": "2.44k",
"rpsStdevPerc": 66.01,
"latency50": "1.45ms",
"latency75": "1.74ms",
"latency90": "2.80ms",
"latency99": "4.24ms",
"wrk": "wrk -t4 -c8 -d120s --timeout 30s --latency http://10.0.3.100:1234/query?q=select%20*%20from%20user%20limit%203"
},
{
"transferPerSec": "1.56MB",
"requestsPerSec": 5039.8,
"requestsTotal": 604777,
"durationActual": "2.00m",
"transferTotal": "187.45MB",
"latencyAvg": "2.24ms",
"latencyStdev": "11.21ms",
"latencyMax": "208.63ms",
"latencyStdevPerc": 99.68,
"rpsAvg": "1.33k",
"rpsStdev": "461.69",
"rpsMax": "2.44k",
"rpsStdevPerc": 63.25,
"latency50": "1.45ms",
"latency75": "1.80ms",
"latency90": "2.92ms",
"latency99": "4.83ms",
"wrk": "wrk -t4 -c9 -d120s --timeout 30s --latency http://10.0.3.100:1234/query?q=select%20*%20from%20user%20limit%203"
},
{
"transferPerSec": "1.57MB",
"requestsPerSec": 5063.44,
"requestsTotal": 607616,
"durationActual": "2.00m",
"transferTotal": "188.33MB",
"latencyAvg": "2.04ms",
"latencyStdev": "9.78ms",
"latencyMax": "213.57ms",
"latencyStdevPerc": 99.74,
"rpsAvg": "1.34k",
"rpsStdev": "370.32",
"rpsMax": "2.44k",
"rpsStdevPerc": 71.3,
"latency50": "1.48ms",
"latency75": "1.75ms",
"latency90": "2.35ms",
"latency99": "4.40ms",
"wrk": "wrk -t4 -c10 -d120s --timeout 30s --latency http://10.0.3.100:1234/query?q=select%20*%20from%20user%20limit%203"
},
{
"transferPerSec": "1.91MB",
"requestsPerSec": 6155.78,
"requestsTotal": 738693,
"durationActual": "2.00m",
"transferTotal": "228.95MB",
"latencyAvg": "3.14ms",
"latencyStdev": "5.63ms",
"latencyMax": "211.80ms",
"latencyStdevPerc": 95.73,
"rpsAvg": "1.73k",
"rpsStdev": "707.78",
"rpsMax": "4.11k",
"rpsStdevPerc": 66,
"latency50": "2.15ms",
"latency75": "3.45ms",
"latency90": "5.31ms",
"latency99": "11.55ms",
"wrk": "wrk -t4 -c20 -d120s --timeout 30s --latency http://10.0.3.100:1234/query?q=select%20*%20from%20user%20limit%203"
},
{
"transferPerSec": "1.97MB",
"requestsPerSec": 6345.32,
"requestsTotal": 761435,
"durationActual": "2.00m",
"transferTotal": "236.00MB",
"latencyAvg": "4.53ms",
"latencyStdev": "7.14ms",
"latencyMax": "212.45ms",
"latencyStdevPerc": 98.34,
"rpsAvg": "1.73k",
"rpsStdev": "481.54",
"rpsMax": "3.27k",
"rpsStdevPerc": 61.08,
"latency50": "3.40ms",
"latency75": "5.07ms",
"latency90": "8.17ms",
"latency99": "12.75ms",
"wrk": "wrk -t4 -c30 -d120s --timeout 30s --latency http://10.0.3.100:1234/query?q=select%20*%20from%20user%20limit%203"
},
{
"transferPerSec": "1.91MB",
"requestsPerSec": 6163.38,
"requestsTotal": 739605,
"durationActual": "2.00m",
"transferTotal": "229.24MB",
"latencyAvg": "6.85ms",
"latencyStdev": "8.57ms",
"latencyMax": "220.58ms",
"latencyStdevPerc": 96.35,
"rpsAvg": "1.63k",
"rpsStdev": "492.47",
"rpsMax": "3.10k",
"rpsStdevPerc": 58.44,
"latency50": "4.93ms",
"latency75": "9.99ms",
"latency90": "12.77ms",
"latency99": "19.48ms",
"wrk": "wrk -t4 -c40 -d120s --timeout 30s --latency http://10.0.3.100:1234/query?q=select%20*%20from%20user%20limit%203"
},
{
"transferPerSec": "1.98MB",
"requestsPerSec": 6388.18,
"requestsTotal": 766582,
"durationActual": "2.00m",
"transferTotal": "237.60MB",
"latencyAvg": "7.48ms",
"latencyStdev": "7.95ms",
"latencyMax": "220.67ms",
"latencyStdevPerc": 94.26,
"rpsAvg": "1.69k",
"rpsStdev": "351.65",
"rpsMax": "3.00k",
"rpsStdevPerc": 65.84,
"latency50": "6.59ms",
"latency75": "8.93ms",
"latency90": "12.69ms",
"latency99": "22.21ms",
"wrk": "wrk -t4 -c50 -d120s --timeout 30s --latency http://10.0.3.100:1234/query?q=select%20*%20from%20user%20limit%203"
},
{
"transferPerSec": "1.98MB",
"requestsPerSec": 6380.46,
"requestsTotal": 765661,
"durationActual": "2.00m",
"transferTotal": "237.31MB",
"latencyAvg": "9.48ms",
"latencyStdev": "9.78ms",
"latencyMax": "238.32ms",
"latencyStdevPerc": 91.94,
"rpsAvg": "1.62k",
"rpsStdev": "192.91",
"rpsMax": "2.47k",
"rpsStdevPerc": 69.38,
"latency50": "6.71ms",
"latency75": "13.22ms",
"latency90": "18.28ms",
"latency99": "28.50ms",
"wrk": "wrk -t4 -c60 -d120s --timeout 30s --latency http://10.0.3.100:1234/query?q=select%20*%20from%20user%20limit%203"
},
{
"transferPerSec": "1.83MB",
"requestsPerSec": 5895.32,
"requestsTotal": 707440,
"durationActual": "2.00m",
"transferTotal": "219.27MB",
"latencyAvg": "12.03ms",
"latencyStdev": "13.56ms",
"latencyMax": "408.05ms",
"latencyStdevPerc": 84.76,
"rpsAvg": "1.53k",
"rpsStdev": "409.17",
"rpsMax": "2.64k",
"rpsStdevPerc": 58.94,
"latency50": "8.90ms",
"latency75": "15.31ms",
"latency90": "28.34ms",
"latency99": "41.48ms",
"wrk": "wrk -t4 -c70 -d120s --timeout 30s --latency http://10.0.3.100:1234/query?q=select%20*%20from%20user%20limit%203"
},
{
"transferPerSec": "1.98MB",
"requestsPerSec": 6394.28,
"requestsTotal": 767311,
"durationActual": "2.00m",
"transferTotal": "237.82MB",
"latencyAvg": "12.75ms",
"latencyStdev": "11.56ms",
"latencyMax": "228.82ms",
"latencyStdevPerc": 95.54,
"rpsAvg": "1.61k",
"rpsStdev": "228.63",
"rpsMax": "2.49k",
"rpsStdevPerc": 64.83,
"latency50": "11.46ms",
"latency75": "16.32ms",
"latency90": "20.67ms",
"latency99": "30.34ms",
"wrk": "wrk -t4 -c80 -d120s --timeout 30s --latency http://10.0.3.100:1234/query?q=select%20*%20from%20user%20limit%203"
},
{
"transferPerSec": "1.95MB",
"requestsPerSec": 6276.09,
"requestsTotal": 753134,
"durationActual": "2.00m",
"transferTotal": "233.43MB",
"latencyAvg": "16.30ms",
"latencyStdev": "12.92ms",
"latencyMax": "246.81ms",
"latencyStdevPerc": 87.6,
"rpsAvg": "1.61k",
"rpsStdev": "309.94",
"rpsMax": "2.64k",
"rpsStdevPerc": 69.98,
"latency50": "14.99ms",
"latency75": "19.89ms",
"latency90": "27.09ms",
"latency99": "44.39ms",
"wrk": "wrk -t4 -c100 -d120s --timeout 30s --latency http://10.0.3.100:1234/query?q=select%20*%20from%20user%20limit%203"
},
{
"transferPerSec": "1.96MB",
"requestsPerSec": 6422.64,
"non2xx3xx": 23148,
"requestsTotal": 770717,
"durationActual": "2.00m",
"transferTotal": "234.62MB",
"latencyAvg": "18.81ms",
"latencyStdev": "13.42ms",
"latencyMax": "267.28ms",
"latencyStdevPerc": 90.16,
"rpsAvg": "1.65k",
"rpsStdev": "263.43",
"rpsMax": "4.06k",
"rpsStdevPerc": 63.47,
"latency50": "18.30ms",
"latency75": "23.75ms",
"latency90": "29.14ms",
"latency99": "45.76ms",
"wrk": "wrk -t4 -c120 -d120s --timeout 30s --latency http://10.0.3.100:1234/query?q=select%20*%20from%20user%20limit%203"
},
{
"transferPerSec": "1.74MB",
"requestsPerSec": 5947.06,
"non2xx3xx": 69561,
"requestsTotal": 713646,
"durationActual": "2.00m",
"transferTotal": "208.39MB",
"latencyAvg": "23.83ms",
"latencyStdev": "15.49ms",
"latencyMax": "250.88ms",
"latencyStdevPerc": 82.93,
"rpsAvg": "1.51k",
"rpsStdev": "218.31",
"rpsMax": "2.29k",
"rpsStdevPerc": 64.84,
"latency50": "21.45ms",
"latency75": "30.48ms",
"latency90": "39.30ms",
"latency99": "55.08ms",
"wrk": "wrk -t4 -c140 -d120s --timeout 30s --latency http://10.0.3.100:1234/query?q=select%20*%20from%20user%20limit%203"
},
{
"transferPerSec": "1.15MB",
"requestsPerSec": 4511.02,
"non2xx3xx": 161623,
"requestsTotal": 541329,
"durationActual": "2.00m",
"transferTotal": "138.03MB",
"latencyAvg": "36.63ms",
"latencyStdev": "22.26ms",
"latencyMax": "309.42ms",
"latencyStdevPerc": 72.69,
"rpsAvg": "1.14k",
"rpsStdev": "217.17",
"rpsMax": "1.92k",
"rpsStdevPerc": 67.97,
"latency50": "33.81ms",
"latency75": "47.70ms",
"latency90": "64.83ms",
"latency99": "90.23ms",
"wrk": "wrk -t4 -c160 -d120s --timeout 30s --latency http://10.0.3.100:1234/query?q=select%20*%20from%20user%20limit%203"
},
{
"transferPerSec": "0.93MB",
"requestsPerSec": 3951.59,
"non2xx3xx": 190664,
"requestsTotal": 474197,
"durationActual": "2.00m",
"transferTotal": "111.88MB",
"latencyAvg": "52.05ms",
"latencyStdev": "42.53ms",
"latencyMax": "424.48ms",
"latencyStdevPerc": 82.25,
"rpsAvg": "0.99k",
"rpsStdev": "179.83",
"rpsMax": "1.55k",
"rpsStdevPerc": 65.77,
"latency50": "36.96ms",
"latency75": "59.40ms",
"latency90": "115.00ms",
"latency99": "210.74ms",
"wrk": "wrk -t4 -c200 -d120s --timeout 30s --latency http://10.0.3.100:1234/query?q=select%20*%20from%20user%20limit%203"
},
{
"transferPerSec": "0.92MB",
"requestsPerSec": 4218.25,
"non2xx3xx": 253239,
"requestsTotal": 506191,
"durationActual": "2.00m",
"transferTotal": "110.28MB",
"latencyAvg": "59.77ms",
"latencyStdev": "33.37ms",
"latencyMax": "328.91ms",
"latencyStdevPerc": 67.83,
"rpsAvg": "1.06k",
"rpsStdev": "143.98",
"rpsMax": "1.47k",
"rpsStdevPerc": 67.86,
"latency50": "54.30ms",
"latency75": "81.48ms",
"latency90": "104.91ms",
"latency99": "148.31ms",
"wrk": "wrk -t4 -c250 -d120s --timeout 30s --latency http://10.0.3.100:1234/query?q=select%20*%20from%20user%20limit%203"
},
{
"transferPerSec": "804.01KB",
"requestsPerSec": 3799.68,
"non2xx3xx": 255911,
"requestsTotal": 455964,
"durationActual": "2.00m",
"transferTotal": "94.22MB",
"latencyAvg": "80.22ms",
"latencyStdev": "40.00ms",
"latencyMax": "379.00ms",
"latencyStdevPerc": 64.05,
"rpsAvg": "0.95k",
"rpsStdev": "129.69",
"rpsMax": "1.34k",
"rpsStdevPerc": 69.28,
"latency50": "80.81ms",
"latency75": "104.44ms",
"latency90": "131.10ms",
"latency99": "185.98ms",
"wrk": "wrk -t4 -c300 -d120s --timeout 30s --latency http://10.0.3.100:1234/query?q=select%20*%20from%20user%20limit%203"
}
]
}
{
"description": "node-mysql2, node 0.10.33, 12 x Intel(R) Xeon(R) CPU E5-1650 0 @ 3.20GHz, cluster x 12",
"runs": [
{
"transferPerSec": "1.21MB",
"requestsPerSec": 3918.64,
"requestsTotal": 470281,
"durationActual": "2.00m",
"transferTotal": "145.76MB",
"latencyAvg": "62.03ms",
"latencyStdev": "147.61ms",
"latencyMax": "603.57ms",
"latencyStdevPerc": 94.54,
"rpsAvg": "1.04k",
"rpsStdev": "585.20",
"rpsMax": "2.22k",
"rpsStdevPerc": 66.85,
"latency50": "0.86ms",
"latency75": "1.22ms",
"latency90": "202.94ms",
"latency99": "603.57ms",
"wrk": "wrk -t4 -c4 -d120s --timeout 30s --latency http://10.0.3.100:1234/query?q=select%20*%20from%20user%20limit%203"
},
{
"transferPerSec": "1.26MB",
"requestsPerSec": 4069.36,
"requestsTotal": 488324,
"durationActual": "2.00m",
"transferTotal": "151.35MB",
"latencyAvg": "44.96ms",
"latencyStdev": "126.94ms",
"latencyMax": "603.13ms",
"latencyStdevPerc": 85.72,
"rpsAvg": "1.08k",
"rpsStdev": "523.94",
"rpsMax": "2.22k",
"rpsStdevPerc": 73.4,
"latency50": "0.88ms",
"latency75": "1.10ms",
"latency90": "203.32ms",
"latency99": "603.13ms",
"wrk": "wrk -t4 -c5 -d120s --timeout 30s --latency http://10.0.3.100:1234/query?q=select%20*%20from%20user%20limit%203"
},
{
"transferPerSec": "1.30MB",
"requestsPerSec": 4179.2,
"requestsTotal": 501505,
"durationActual": "2.00m",
"transferTotal": "155.44MB",
"latencyAvg": "30.19ms",
"latencyStdev": "87.22ms",
"latencyMax": "403.17ms",
"latencyStdevPerc": 88.6,
"rpsAvg": "1.11k",
"rpsStdev": "483.23",
"rpsMax": "2.11k",
"rpsStdevPerc": 74.45,
"latency50": "845.00us",
"latency75": "1.05ms",
"latency90": "202.41ms",
"latency99": "403.17ms",
"wrk": "wrk -t4 -c6 -d120s --timeout 30s --latency http://10.0.3.100:1234/query?q=select%20*%20from%20user%20limit%203"
},
{
"transferPerSec": "1.47MB",
"requestsPerSec": 4743.65,
"requestsTotal": 569237,
"durationActual": "2.00m",
"transferTotal": "176.43MB",
"latencyAvg": "12.60ms",
"latencyStdev": "47.25ms",
"latencyMax": "202.21ms",
"latencyStdevPerc": 94.14,
"rpsAvg": "1.26k",
"rpsStdev": "433.80",
"rpsMax": "2.22k",
"rpsStdevPerc": 76.25,
"latency50": "785.00us",
"latency75": "0.96ms",
"latency90": "1.26ms",
"latency99": "202.06ms",
"wrk": "wrk -t4 -c7 -d120s --timeout 30s --latency http://10.0.3.100:1234/query?q=select%20*%20from%20user%20limit%203"
},
{
"transferPerSec": "3.18MB",
"requestsPerSec": 10273.81,
"requestsTotal": 1232857,
"durationActual": "2.00m",
"transferTotal": "382.12MB",
"latencyAvg": "2.25ms",
"latencyStdev": "17.55ms",
"latencyMax": "202.41ms",
"latencyStdevPerc": 99.23,
"rpsAvg": "2.71k",
"rpsStdev": "587.28",
"rpsMax": "3.89k",
"rpsStdevPerc": 79.84,
"latency50": "699.00us",
"latency75": "750.00us",
"latency90": "846.00us",
"latency99": "2.08ms",
"wrk": "wrk -t4 -c8 -d120s --timeout 30s --latency http://10.0.3.100:1234/query?q=select%20*%20from%20user%20limit%203"
},
{
"transferPerSec": "3.12MB",
"requestsPerSec": 10066.9,
"requestsTotal": 1208025,
"durationActual": "2.00m",
"transferTotal": "374.42MB",
"latencyAvg": "2.21ms",
"latencyStdev": "17.27ms",
"latencyMax": "202.71ms",
"latencyStdevPerc": 99.26,
"rpsAvg": "2.66k",
"rpsStdev": "601.08",
"rpsMax": "3.78k",
"rpsStdevPerc": 79.27,
"latency50": "702.00us",
"latency75": "788.00us",
"latency90": "0.86ms",
"latency99": "2.16ms",
"wrk": "wrk -t4 -c9 -d120s --timeout 30s --latency http://10.0.3.100:1234/query?q=select%20*%20from%20user%20limit%203"
},
{
"transferPerSec": "2.89MB",
"requestsPerSec": 9326.49,
"requestsTotal": 1119176,
"durationActual": "2.00m",
"transferTotal": "346.88MB",
"latencyAvg": "7.73ms",
"latencyStdev": "52.38ms",
"latencyMax": "603.50ms",
"latencyStdevPerc": 97.66,
"rpsAvg": "2.46k",
"rpsStdev": "770.98",
"rpsMax": "3.67k",
"rpsStdevPerc": 69.12,
"latency50": "701.00us",
"latency75": "777.00us",
"latency90": "0.89ms",
"latency99": "205.40ms",
"wrk": "wrk -t4 -c10 -d120s --timeout 30s --latency http://10.0.3.100:1234/query?q=select%20*%20from%20user%20limit%203"
},
{
"transferPerSec": "4.24MB",
"requestsPerSec": 13668.6,
"requestsTotal": 1640232,
"durationActual": "2.00m",
"transferTotal": "508.38MB",
"latencyAvg": "1.57ms",
"latencyStdev": "7.96ms",
"latencyMax": "211.59ms",
"latencyStdevPerc": 99.75,
"rpsAvg": "3.61k",
"rpsStdev": "0.86k",
"rpsMax": "6.89k",
"rpsStdevPerc": 69.12,
"latency50": "1.07ms",
"latency75": "1.43ms",
"latency90": "1.99ms",
"latency99": "4.39ms",
"wrk": "wrk -t4 -c20 -d120s --timeout 30s --latency http://10.0.3.100:1234/query?q=select%20*%20from%20user%20limit%203"
},
{
"transferPerSec": "4.33MB",
"requestsPerSec": 13966.21,
"requestsTotal": 1675937,
"durationActual": "2.00m",
"transferTotal": "519.45MB",
"latencyAvg": "2.10ms",
"latencyStdev": "7.32ms",
"latencyMax": "206.89ms",
"latencyStdevPerc": 99.69,
"rpsAvg": "3.69k",
"rpsStdev": "0.89k",
"rpsMax": "7.33k",
"rpsStdevPerc": 69.14,
"latency50": "1.44ms",
"latency75": "2.27ms",
"latency90": "3.68ms",
"latency99": "6.05ms",
"wrk": "wrk -t4 -c30 -d120s --timeout 30s --latency http://10.0.3.100:1234/query?q=select%20*%20from%20user%20limit%203"
},
{
"transferPerSec": "4.67MB",
"requestsPerSec": 15062.29,
"requestsTotal": 1807467,
"durationActual": "2.00m",
"transferTotal": "560.21MB",
"latencyAvg": "2.68ms",
"latencyStdev": "7.83ms",
"latencyMax": "603.26ms",
"latencyStdevPerc": 99.63,
"rpsAvg": "3.98k",
"rpsStdev": "719.21",
"rpsMax": "7.11k",
"rpsStdevPerc": 68.9,
"latency50": "2.24ms",
"latency75": "2.85ms",
"latency90": "4.09ms",
"latency99": "7.15ms",
"wrk": "wrk -t4 -c40 -d120s --timeout 30s --latency http://10.0.3.100:1234/query?q=select%20*%20from%20user%20limit%203"
},
{
"transferPerSec": "4.55MB",
"requestsPerSec": 14678.78,
"requestsTotal": 1761452,
"durationActual": "2.00m",
"transferTotal": "545.95MB",
"latencyAvg": "3.32ms",
"latencyStdev": "9.09ms",
"latencyMax": "606.03ms",
"latencyStdevPerc": 99.62,
"rpsAvg": "3.87k",
"rpsStdev": "722.90",
"rpsMax": "7.22k",
"rpsStdevPerc": 69.39,
"latency50": "2.82ms",
"latency75": "3.65ms",
"latency90": "4.47ms",
"latency99": "8.10ms",
"wrk": "wrk -t4 -c50 -d120s --timeout 30s --latency http://10.0.3.100:1234/query?q=select%20*%20from%20user%20limit%203"
},
{
"transferPerSec": "4.80MB",
"requestsPerSec": 15484.14,
"requestsTotal": 1858095,
"durationActual": "2.00m",
"transferTotal": "575.91MB",
"latencyAvg": "3.95ms",
"latencyStdev": "10.20ms",
"latencyMax": "214.97ms",
"latencyStdevPerc": 99.36,
"rpsAvg": "4.07k",
"rpsStdev": "698.88",
"rpsMax": "7.10k",
"rpsStdevPerc": 68.02,
"latency50": "3.03ms",
"latency75": "4.74ms",
"latency90": "5.62ms",
"latency99": "11.55ms",
"wrk": "wrk -t4 -c60 -d120s --timeout 30s --latency http://10.0.3.100:1234/query?q=select%20*%20from%20user%20limit%203"
},
{
"transferPerSec": "4.61MB",
"requestsPerSec": 14877.31,
"requestsTotal": 1785270,
"durationActual": "2.00m",
"transferTotal": "553.33MB",
"latencyAvg": "4.66ms",
"latencyStdev": "10.73ms",
"latencyMax": "605.88ms",
"latencyStdevPerc": 99.38,
"rpsAvg": "3.89k",
"rpsStdev": "676.01",
"rpsMax": "6.83k",
"rpsStdevPerc": 67.27,
"latency50": "3.91ms",
"latency75": "5.32ms",
"latency90": "7.04ms",
"latency99": "12.13ms",
"wrk": "wrk -t4 -c70 -d120s --timeout 30s --latency http://10.0.3.100:1234/query?q=select%20*%20from%20user%20limit%203"
},
{
"transferPerSec": "4.68MB",
"requestsPerSec": 15113.29,
"requestsTotal": 1813591,
"durationActual": "2.00m",
"transferTotal": "562.11MB",
"latencyAvg": "5.32ms",
"latencyStdev": "10.38ms",
"latencyMax": "610.93ms",
"latencyStdevPerc": 99.31,
"rpsAvg": "3.91k",
"rpsStdev": "580.79",
"rpsMax": "8.47k",
"rpsStdevPerc": 68.77,
"latency50": "4.66ms",
"latency75": "6.15ms",
"latency90": "7.70ms",
"latency99": "13.61ms",
"wrk": "wrk -t4 -c80 -d120s --timeout 30s --latency http://10.0.3.100:1234/query?q=select%20*%20from%20user%20limit%203"
},
{
"transferPerSec": "4.69MB",
"requestsPerSec": 15132.11,
"requestsTotal": 1815844,
"durationActual": "2.00m",
"transferTotal": "562.81MB",
"latencyAvg": "6.66ms",
"latencyStdev": "10.92ms",
"latencyMax": "230.08ms",
"latencyStdevPerc": 98.19,
"rpsAvg": "3.87k",
"rpsStdev": "541.71",
"rpsMax": "5.91k",
"rpsStdevPerc": 67.48,
"latency50": "5.11ms",
"latency75": "7.99ms",
"latency90": "12.16ms",
"latency99": "20.40ms",
"wrk": "wrk -t4 -c100 -d120s --timeout 30s --latency http://10.0.3.100:1234/query?q=select%20*%20from%20user%20limit%203"
},
{
"transferPerSec": "4.69MB",
"requestsPerSec": 15118.99,
"requestsTotal": 1814276,
"durationActual": "2.00m",
"transferTotal": "562.32MB",
"latencyAvg": "8.04ms",
"latencyStdev": "12.24ms",
"latencyMax": "605.34ms",
"latencyStdevPerc": 98.79,
"rpsAvg": "3.88k",
"rpsStdev": "463.29",
"rpsMax": "5.80k",
"rpsStdevPerc": 69.4,
"latency50": "7.26ms",
"latency75": "9.54ms",
"latency90": "11.89ms",
"latency99": "21.75ms",
"wrk": "wrk -t4 -c120 -d120s --timeout 30s --latency http://10.0.3.100:1234/query?q=select%20*%20from%20user%20limit%203"
},
{
"transferPerSec": "4.75MB",
"requestsPerSec": 15387.84,
"non2xx3xx": 11765,
"requestsTotal": 1846537,
"durationActual": "2.00m",
"transferTotal": "570.16MB",
"latencyAvg": "9.15ms",
"latencyStdev": "11.88ms",
"latencyMax": "225.36ms",
"latencyStdevPerc": 98.81,
"rpsAvg": "3.91k",
"rpsStdev": "381.45",
"rpsMax": "5.60k",
"rpsStdevPerc": 69.06,
"latency50": "8.40ms",
"latency75": "10.98ms",
"latency90": "12.94ms",
"latency99": "22.03ms",
"wrk": "wrk -t4 -c140 -d120s --timeout 30s --latency http://10.0.3.100:1234/query?q=select%20*%20from%20user%20limit%203"
},
{
"transferPerSec": "4.59MB",
"requestsPerSec": 15081.82,
"non2xx3xx": 54868,
"requestsTotal": 1809813,
"durationActual": "2.00m",
"transferTotal": "550.84MB",
"latencyAvg": "10.69ms",
"latencyStdev": "12.81ms",
"latencyMax": "610.63ms",
"latencyStdevPerc": 98.02,
"rpsAvg": "3.84k",
"rpsStdev": "356.10",
"rpsMax": "6.45k",
"rpsStdevPerc": 70.67,
"latency50": "9.16ms",
"latency75": "11.72ms",
"latency90": "16.06ms",
"latency99": "28.91ms",
"wrk": "wrk -t4 -c160 -d120s --timeout 30s --latency http://10.0.3.100:1234/query?q=select%20*%20from%20user%20limit%203"
},
{
"transferPerSec": "4.52MB",
"requestsPerSec": 14968.4,
"non2xx3xx": 79646,
"requestsTotal": 1796208,
"durationActual": "2.00m",
"transferTotal": "542.06MB",
"latencyAvg": "13.55ms",
"latencyStdev": "13.88ms",
"latencyMax": "623.86ms",
"latencyStdevPerc": 96.95,
"rpsAvg": "3.95k",
"rpsStdev": "0.91k",
"rpsMax": "7.34k",
"rpsStdevPerc": 60.82,
"latency50": "12.30ms",
"latency75": "16.21ms",
"latency90": "20.89ms",
"latency99": "37.37ms",
"wrk": "wrk -t4 -c200 -d120s --timeout 30s --latency http://10.0.3.100:1234/query?q=select%20*%20from%20user%20limit%203"
},
{
"transferPerSec": "4.51MB",
"requestsPerSec": 15322.75,
"non2xx3xx": 158489,
"requestsTotal": 1838726,
"durationActual": "2.00m",
"transferTotal": "540.73MB",
"latencyAvg": "16.12ms",
"latencyStdev": "13.41ms",
"latencyMax": "429.90ms",
"latencyStdevPerc": 93.2,
"rpsAvg": "3.87k",
"rpsStdev": "288.24",
"rpsMax": "5.55k",
"rpsStdevPerc": 72.23,
"latency50": "15.17ms",
"latency75": "19.95ms",
"latency90": "25.69ms",
"latency99": "38.95ms",
"wrk": "wrk -t4 -c250 -d120s --timeout 30s --latency http://10.0.3.100:1234/query?q=select%20*%20from%20user%20limit%203"
},
{
"transferPerSec": "4.13MB",
"requestsPerSec": 15403.82,
"non2xx3xx": 419020,
"requestsTotal": 1848447,
"durationActual": "2.00m",
"transferTotal": "495.79MB",
"latencyAvg": "19.59ms",
"latencyStdev": "16.51ms",
"latencyMax": "609.13ms",
"latencyStdevPerc": 85.51,
"rpsAvg": "3.89k",
"rpsStdev": "419.08",
"rpsMax": "5.54k",
"rpsStdevPerc": 67.34,
"latency50": "17.74ms",
"latency75": "25.10ms",
"latency90": "34.14ms",
"latency99": "57.71ms",
"wrk": "wrk -t4 -c300 -d120s --timeout 30s --latency http://10.0.3.100:1234/query?q=select%20*%20from%20user%20limit%203"
}
]
}
html
body
ul#users
each record in records
li(class='user-' + record.max_user_connections) #{record.User} #{record.Host} #{record.Password}
var wrk = require('wrk');
var ms = require('ms');
var fs = require('fs');
var conns = 10;
var results = [];
var rows = 20;
var params = [
4, 5, 6, 7, 8, 9, 10, 20, 30, 40, 50, 60, 70, 80, 100, 120, 140, 160, 200, 250, 300
]
function benchmark() {
if (params.length == 0) {
fs.writeFileSync("results.json", JSON.stringify({
description: 'memory, node 0.10.33, 12 x Intel(R) Xeon(R) CPU E5-1650 0 @ 3.20GHz, cluster x 12',
runs: results
}, null, 4));
return;
}
var conns = params.shift();
wrk({
threads: 4,
connections: conns,
duration: '120s',
printLatency: true,
timeout: '30s',
//url: 'http://10.0.3.100:1234/query?q=select%20*%20from%20user%20limit%203'
url: 'http://10.0.3.100:1234/memory?n=3'
}, function(err, out, cmd) {
if (err) {
out = {
wrkError: err.message
}
} else
console.log(conns, out.requestsPerSec, out.rpsStdevPerc, ms(out.latency90), out.latencyStdevPerc);
out.connections = conns;
out.wrk = cmd;
results.push(out);
benchmark();
});
}
benchmark();
var wrk = require('./index.js');
var results = [];
var startRate = 2000;
var endRate = 3700;
var step = 50;
function bench(rate) {
var opts = {
path: '../wrk2/wrk',
rate: rate,
duration: '600s',
threads: 2,
connections: 200,
printLatency: true,
url: 'http://1.2.3.4/query'
}
console.log('Benchmarking: ', opts);
wrk(opts, function(err, res) {
if (err) {
console.log(err);
return bench(rate);
}
console.log(res.requestsPerSec);
results.push({
opts: opts,
result: res
});
require('fs').writeFileSync('results-mysql-8users.json', JSON.stringify(results, null, 4));
if (rate + step <= endRate) {
bench(rate + step);
}
});
}
bench(startRate);
@joepie91
Copy link

Curious, what did you use for rendering those graphs?

@sidorares
Copy link
Author

@joepie91 just basic gnuplot

@afj9966
Copy link

afj9966 commented Aug 11, 2020

Curious, what did you use for rendering those graphs?

I believe is Chart.js

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment