-
Notifications
You must be signed in to change notification settings - Fork 36
HTTPD Benchmarks
mschwartz edited this page Dec 10, 2011
·
6 revisions
SilkJS HTTPD is fast. Really fast. It's also robust enough to handle 20,000 concurrent requests (in theory).
marc wrote me:
Request per second results...
silkjs = 26759 rps
lighttpd = 17183 rps (v1.4.29)
nodejs = 2212 (v0.6.5 - single core, simple static server)
CPU = i7-2630QM CPU @ 2.00GHz
The only downside to this awesome result is the amount of ram in
use...
~ ps aux | grep silkjs | awk '{total += $6} END {print total}'
2019868
These tests were run on a Sager NP9281 laptop running Ubuntu. Core i7 920 with 12G of RAM.
In these tests, SilkJS is about 90% as fast as Apache serving static files and considerably faster than Apache and PHP 5.3 executing code and even faster when doing MySQL queries.
# ab -t 30 -k -c 50 http://localhost:9090/anchor.png
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking localhost (be patient)
Completed 5000 requests
Completed 10000 requests
Completed 15000 requests
Completed 20000 requests
Completed 25000 requests
Completed 30000 requests
Completed 35000 requests
Completed 40000 requests
Completed 45000 requests
Completed 50000 requests
Finished 50000 requests
Server Software: SILK
Server Hostname: localhost
Server Port: 9090
Document Path: /anchor.png
Document Length: 523 bytes
Concurrency Level: 50
Time taken for tests: 1.332 seconds
Complete requests: 50000
Failed requests: 0
Write errors: 0
Keep-Alive requests: 49901
Total transferred: 35346139 bytes
HTML transferred: 26150000 bytes
Requests per second: 37527.73 [#/sec] (mean)
Time per request: 1.332 [ms] (mean)
Time per request: 0.027 [ms] (mean, across all concurrent requests)
Transfer rate: 25907.43 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.0 0 2
Processing: 0 1 2.1 0 42
Waiting: 0 1 2.1 0 42
Total: 0 1 2.1 0 42
Percentage of the requests served within a certain time (ms)
50% 0
66% 1
75% 1
80% 1
90% 3
95% 5
98% 8
99% 10
100% 42 (longest request)
#
# ab -t 30 -c 5000 -k http://localhost:9090/anchor.png
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking localhost (be patient)
Completed 5000 requests
Completed 10000 requests
Completed 15000 requests
Completed 20000 requests
Completed 25000 requests
Completed 30000 requests
Completed 35000 requests
Completed 40000 requests
Completed 45000 requests
Completed 50000 requests
Finished 50000 requests
Server Software: SILK
Server Hostname: localhost
Server Port: 9090
Document Path: /anchor.png
Document Length: 523 bytes
Concurrency Level: 5000
Time taken for tests: 1.474 seconds
Complete requests: 50000
Failed requests: 0
Write errors: 0
Keep-Alive requests: 50000
Total transferred: 35350000 bytes
HTML transferred: 26150000 bytes
Requests per second: 33925.56 [#/sec] (mean)
Time per request: 147.382 [ms] (mean)
Time per request: 0.029 [ms] (mean, across all concurrent requests)
Transfer rate: 23423.21 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 4.0 0 84
Processing: 0 7 15.5 5 271
Waiting: 0 7 15.5 5 271
Total: 0 7 17.9 5 335
Percentage of the requests served within a certain time (ms)
50% 5
66% 6
75% 7
80% 8
90% 14
95% 22
98% 34
99% 60
100% 335 (longest request)
#
# ab -t 30 -c 20000 -k http://localhost:9090/sprite.png
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking localhost (be patient)
Completed 5000 requests
Completed 10000 requests
Completed 15000 requests
Completed 20000 requests
Completed 25000 requests
Completed 30000 requests
Completed 35000 requests
Completed 40000 requests
Completed 45000 requests
Completed 50000 requests
Finished 50000 requests
Server Software: SILK
Server Hostname: localhost
Server Port: 9090
Document Path: /sprite.png
Document Length: 13263 bytes
Concurrency Level: 20000
Time taken for tests: 2.213 seconds
Complete requests: 50000
Failed requests: 0
Write errors: 0
Keep-Alive requests: 50000
Total transferred: 672450000 bytes
HTML transferred: 663150000 bytes
Requests per second: 22598.83 [#/sec] (mean)
Time per request: 885.002 [ms] (mean)
Time per request: 0.044 [ms] (mean, across all concurrent requests)
Transfer rate: 296808.26 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 2 22.0 0 315
Processing: 0 22 59.4 12 1117
Waiting: 0 21 59.5 11 1117
Total: 0 24 74.9 12 1432
Percentage of the requests served within a certain time (ms)
50% 12
66% 13
75% 16
80% 19
90% 32
95% 71
98% 204
99% 283
100% 1432 (longest request)
#
In the below benchmarks,
Apache:
$ apache2 -version
Server version: Apache/2.2.17 (Ubuntu)
Server built: Feb 22 2011 18:35:08
PHP APC cache/accelerator is installed.
$ uname -a
Linux presto 2.6.38-8-generic #42-Ubuntu SMP Mon Apr 11 03:31:24 UTC 2011 x86_64 x86_64 x86_64 GNU/Linux
KUbuntu natty
$ cat /var/www/test.php
<?php
for ($i=0; $i<10; $i++) {
echo "hello, world\n";
}
$ ab -r -n 100000 -k -c 50 http://localhost/test.php
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking localhost (be patient)
Completed 10000 requests
Completed 20000 requests
Completed 30000 requests
Completed 40000 requests
Completed 50000 requests
Completed 60000 requests
Completed 70000 requests
Completed 80000 requests
Completed 90000 requests
Completed 100000 requests
Finished 100000 requests
Server Software: Apache/2.2.17
Server Hostname: localhost
Server Port: 80
Document Path: /test.php
Document Length: 130 bytes
Concurrency Level: 50
Time taken for tests: 3.656 seconds
Complete requests: 100000
Failed requests: 0
Write errors: 0
Keep-Alive requests: 100000
Total transferred: 37100000 bytes
HTML transferred: 13000000 bytes
Requests per second: 27350.70 [#/sec] (mean)
Time per request: 1.828 [ms] (mean)
Time per request: 0.037 [ms] (mean, across all concurrent requests)
Transfer rate: 9909.29 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.1 0 3
Processing: 0 2 2.7 0 29
Waiting: 0 2 2.7 0 29
Total: 0 2 2.7 0 29
Percentage of the requests served within a certain time (ms)
50% 0
66% 2
75% 3
80% 3
90% 5
95% 7
98% 10
99% 12
100% 29 (longest request)
$ cat node-test.js
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
}).listen(1337, "127.0.0.1");
console.log('Server running at http://127.0.0.1:1337/');
$ ab -r -n 100000 -k -c 50 http://localhost:1337/
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking localhost (be patient)
Completed 10000 requests
Completed 20000 requests
Completed 30000 requests
Completed 40000 requests
Completed 50000 requests
Completed 60000 requests
Completed 70000 requests
Completed 80000 requests
Completed 90000 requests
Completed 100000 requests
Finished 100000 requests
Server Software:
Server Hostname: localhost
Server Port: 1337
Document Path: /
Document Length: 12 bytes
Concurrency Level: 50
Time taken for tests: 14.708 seconds
Complete requests: 100000
Failed requests: 0
Write errors: 0
Keep-Alive requests: 0
Total transferred: 7600000 bytes
HTML transferred: 1200000 bytes
Requests per second: 6799.08 [#/sec] (mean)
Time per request: 7.354 [ms] (mean)
Time per request: 0.147 [ms] (mean, across all concurrent requests)
Transfer rate: 504.62 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.1 0 3
Processing: 0 7 3.8 7 28
Waiting: 0 7 3.8 7 28
Total: 1 7 3.8 7 28
Percentage of the requests served within a certain time (ms)
50% 7
66% 9
75% 10
80% 11
90% 12
95% 14
98% 16
99% 17
100% 28 (longest request)
$ node --version
v0.4.8
$