From 3e1b3e0dbf80b3243cb1d758d40674543ecaa111 Mon Sep 17 00:00:00 2001 From: Rich Trott Date: Fri, 26 Jun 2015 22:11:30 -0700 Subject: [PATCH] benchmark: make concurrent requests configurable In http_bench.js, allow the concurrent requests per client to be configurable. This also changes the launch of clients to wait until all forked servers are online. This eliminates spurious error messages at the start of the run. PR-URL: https://github.com/nodejs/io.js/pull/2068 Reviewed-By: Ben Noordhuis --- benchmark/http_bench.js | 33 +++++++++++++++++++++++---------- 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/benchmark/http_bench.js b/benchmark/http_bench.js index 0541667760a774..a8f99e2f0e7978 100644 --- a/benchmark/http_bench.js +++ b/benchmark/http_bench.js @@ -8,7 +8,8 @@ var options = { port: 22344, path: '/', servers: 1, - clients: 1 + clients: 1, + clientConcurrentRequests: 2 }; for (var i = 2; i < process.argv.length; ++i) { @@ -44,13 +45,25 @@ function patch(fun) { function startMaster() { if (!cluster.isMaster) return startServer(); - for (var i = ~~options.servers; i > 0; --i) cluster.fork(); + var forkCount = 0; + + cluster.on('online', function () { + forkCount = forkCount + 1; + if (forkCount === ~~options.servers) { + var args = [ + __filename, + 'mode=client', + 'clientConcurrentRequests=' + options.clientConcurrentRequests + ]; + for (var i = ~~options.clients; i > 0; --i) { + var cp = spawn(process.execPath, args); + cp.stdout.pipe(process.stdout); + cp.stderr.pipe(process.stderr); + } + } + }); - for (var i = ~~options.clients; i > 0; --i) { - var cp = spawn(process.execPath, [__filename, 'mode=client']); - cp.stdout.pipe(process.stdout); - cp.stderr.pipe(process.stderr); - } + for (var i = ~~options.servers; i > 0; --i) cluster.fork(); } function startServer() { @@ -73,9 +86,9 @@ function startServer() { function startClient() { // send off a bunch of concurrent requests - // TODO make configurable - sendRequest(); - sendRequest(); + for (var i = ~~options.clientConcurrentRequests; i > 0; --i) { + sendRequest(); + } function sendRequest() { var req = http.request(options, onConnection);