* Guile fibers server vs. varnish/lighttpd and SSL:nginx/varnish/lighttpd
@ 2017-07-15 19:30 Arne Babenhauserheide
0 siblings, 0 replies; only message in thread
From: Arne Babenhauserheide @ 2017-07-15 19:30 UTC (permalink / raw)
To: guile-user
[-- Attachment #1: Type: text/plain, Size: 5651 bytes --]
Hi,
I did a simple performance test of Guile fibers vs. my local setup which
(a) serves the lighttpd "it works" reply using varnish (varnish/lighttpd) and
(b) forwards that over SSL using nginx (nginx/varnish/lighttpd).
The Guile fibers server uses the following simple script:
- https://notabug.org/ArneBab/guile-base64server/src/master/server.scm#L135
- https://bitbucket.org/ArneBab/guile-base64server/src/aec8471fdeff/server.scm#server.scm-135
The system is an simple homeserver behind a cheap off-the-shelf
fritz-box which was already outdated when we got it around 4 years ago.
The server has two cores, clocked down to 800MHz, runs Gentoo GNU/Linux,
and is typically completely overloaded with 3-4 Freenet instances (only
the one with the WoT-plugin and Sone actually overloads it, the others
are around 10% load each).
I tested it with wrk. Here are three runs: One with 50 concurrent
requests, one with 100 concurrent requests, one with 200 concurrent
requests. With 200 concurrent requests, the latencies rise sharply.
The requests are fired from a remote box.
$ wrk -c 50 -t 3 -d 60s --timeout 15m http://d6.gnutella2.info:2342; wrk -c 50 -t 3 -d 60s --timeout 15m http://d6.gnutella2.info:80; wrk -c 50 -t 3 -d 60s --timeout 15m https://d6.gnutella2.info
Running 1m test @ http://d6.gnutella2.info:2342
3 threads and 50 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 383.40ms 385.49ms 4.10s 91.35%
Req/Sec 41.52 8.37 63.00 64.51%
7508 requests in 1.00m, 1.13MB read
Requests/sec: 125.13
Transfer/sec: 19.31KB
Running 1m test @ http://d6.gnutella2.info:80
3 threads and 50 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 500.32ms 505.07ms 6.90s 94.21%
Req/Sec 26.70 5.40 41.00 66.59%
4893 requests in 1.00m, 1.60MB read
Requests/sec: 81.55
Transfer/sec: 27.29KB
Running 1m test @ https://d6.gnutella2.info
3 threads and 50 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 595.61ms 700.75ms 9.28s 92.21%
Req/Sec 24.84 5.91 41.00 73.22%
4303 requests in 1.00m, 1.49MB read
Socket errors: connect 0, read 0, write 0, timeout 161
Requests/sec: 71.72
Transfer/sec: 25.36KB
$ wrk -c 100 -t 3 -d 60s --timeout 15m http://d6.gnutella2.info:2342; wrk -c 100 -t 3 -d 60s --timeout 15m http://d6.gnutella2.info:80; wrk -c 100 -t 3 -d 60s --timeout 15m https://d6.gnutella2.info
Running 1m test @ http://d6.gnutella2.info:2342
3 threads and 100 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 927.76ms 2.86s 27.74s 97.13%
Req/Sec 44.08 10.46 73.00 71.20%
7867 requests in 1.00m, 1.19MB read
Socket errors: connect 0, read 0, write 0, timeout 11
Requests/sec: 131.11
Transfer/sec: 20.23KB
Running 1m test @ http://d6.gnutella2.info:80
3 threads and 100 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 605.29ms 874.02ms 11.70s 94.95%
Req/Sec 29.18 7.80 45.00 61.41%
5321 requests in 1.00m, 1.74MB read
Socket errors: connect 0, read 0, write 0, timeout 18
Requests/sec: 88.68
Transfer/sec: 29.68KB
Running 1m test @ https://d6.gnutella2.info
3 threads and 100 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 1.10s 3.19s 34.16s 97.20%
Req/Sec 24.39 7.20 40.00 64.13%
4320 requests in 1.00m, 1.49MB read
Socket errors: connect 0, read 0, write 0, timeout 891
Requests/sec: 71.95
Transfer/sec: 25.36KB
$ wrk -c 200 -t 3 -d 60s --timeout 15m http://d6.gnutella2.info:2342; wrk -c 200 -t 3 -d 60s --timeout 15m http://d6.gnutella2.info:80; wrk -c 200 -t 3 -d 60s --timeout 15m https://d6.gnutella2.info
Running 1m test @ http://d6.gnutella2.info:2342
3 threads and 200 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 2.63s 8.82s 0.96m 95.40%
Req/Sec 43.75 10.14 78.00 71.72%
7743 requests in 1.00m, 1.17MB read
Socket errors: connect 0, read 0, write 0, timeout 95
Requests/sec: 129.05
Transfer/sec: 19.91KB
Running 1m test @ http://d6.gnutella2.info:80
3 threads and 200 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 4.51s 7.28s 18.51s 78.77%
Req/Sec 27.53 8.17 55.00 66.06%
5106 requests in 1.00m, 1.67MB read
Socket errors: connect 0, read 0, write 0, timeout 96
Requests/sec: 85.10
Transfer/sec: 28.50KB
Running 1m test @ https://d6.gnutella2.info
3 threads and 200 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 4.02s 10.62s 49.52s 91.64%
Req/Sec 23.12 7.30 39.00 68.04%
3908 requests in 1.00m, 1.35MB read
Socket errors: connect 0, read 0, write 0, timeout 2981
Requests/sec: 65.13
Transfer/sec: 23.02KB
Guile creates around 18% load (of 200% available on 2 cores combined).
Varnish creates around 6% load for varnish/lighttpd (lighttpd does not
create noticeable load here, it likely only gets hit one single time).
nginx creates another 6% load for nginx/varnish/lighttpd (total: 12%).
I hope these results are an interesting datapoint for you.
For all interpretations keep in mind that this box is really perpetually
overloaded (but the high load processes run with niceness 10).
Best wishes,
Arne
--
Unpolitisch sein
heißt politisch sein
ohne es zu merken
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 832 bytes --]
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2017-07-15 19:30 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-07-15 19:30 Guile fibers server vs. varnish/lighttpd and SSL:nginx/varnish/lighttpd Arne Babenhauserheide
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).