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 <info@bnoordhuis.nl>
This commit is contained in:
Rich Trott 2015-06-26 22:11:30 -07:00
Родитель f52d73352e
Коммит 05a73c0f25
1 изменённых файлов: 23 добавлений и 10 удалений

Просмотреть файл

@ -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;
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);
}
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.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);