So here are some numbers using ab with keep alive option: HTTP :8080 98634.66 [#/sec] 117224.98 [Kbytes/sec] HTTP :8888 67073.40 [#/sec] 79715.16 [Kbytes/sec] HTTPS:8443 23622.46 [#/sec] 28074.74 [Kbytes/sec] HTTPS:8843 52365.51 [#/sec] 62235.18 [Kbytes/sec]
So the headline here is that even with keep-alive direct SSL sucks, but via haproxy/unixsockets it is about half the throughput of a direct connection... but more importantly (in and apples with apples kind of way) it is 78% of the throughput of the plain text proxied test. So as proxies can have other benefits (eg load balancing), SSL is only just over a 20% cost... if you have a proxy anyway. Full numbers below (still lacking rigour and only over localhost... but I'm trying to stir up interest here so that others might benchmark with some real world apps/load) gregw@Tile440: ~ [2035] ab -n 500000 -c 100 -k http://localhost:8080/ This is ApacheBench, Version 2.3 <$Revision: 1604373 $> 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 50000 requests Completed 100000 requests Completed 150000 requests Completed 200000 requests Completed 250000 requests Completed 300000 requests Completed 350000 requests Completed 400000 requests Completed 450000 requests Completed 500000 requests Finished 500000 requests Server Software: Jetty(9.3.z-SNAPSHOT) Server Hostname: localhost Server Port: 8080 Document Path: / Document Length: 1045 bytes Concurrency Level: 100 Time taken for tests: 5.069 seconds Complete requests: 500000 Failed requests: 0 Keep-Alive requests: 500000 Total transferred: 608500000 bytes HTML transferred: 522500000 bytes Requests per second: 98634.66 [#/sec] (mean) Time per request: 1.014 [ms] (mean) Time per request: 0.010 [ms] (mean, across all concurrent requests) Transfer rate: 117224.98 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 0.0 0 4 Processing: 0 1 1.3 1 88 Waiting: 0 1 1.3 1 88 Total: 0 1 1.3 1 88 Percentage of the requests served within a certain time (ms) 50% 1 66% 1 75% 1 80% 1 90% 2 95% 2 98% 3 99% 5 100% 88 (longest request) gregw@Tile440: ~ [2036] ab -n 500000 -c 100 -k http://localhost:8888/ This is ApacheBench, Version 2.3 <$Revision: 1604373 $> 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 50000 requests Completed 100000 requests Completed 150000 requests Completed 200000 requests Completed 250000 requests Completed 300000 requests Completed 350000 requests Completed 400000 requests Completed 450000 requests Completed 500000 requests Finished 500000 requests Server Software: Jetty(9.3.z-SNAPSHOT) Server Hostname: localhost Server Port: 8888 Document Path: / Document Length: 1045 bytes Concurrency Level: 100 Time taken for tests: 7.455 seconds Complete requests: 500000 Failed requests: 0 Keep-Alive requests: 500000 Total transferred: 608500000 bytes HTML transferred: 522500000 bytes Requests per second: 67073.40 [#/sec] (mean) Time per request: 1.491 [ms] (mean) Time per request: 0.015 [ms] (mean, across all concurrent requests) Transfer rate: 79715.16 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 0.0 0 3 Processing: 0 1 0.8 1 29 Waiting: 0 1 0.8 1 29 Total: 0 1 0.8 1 29 Percentage of the requests served within a certain time (ms) 50% 1 66% 2 75% 2 80% 2 90% 2 95% 3 98% 3 99% 4 100% 29 (longest request) gregw@Tile440: ~ [2037] ab -n 500000 -c 100 -k https://localhost:8443/ This is ApacheBench, Version 2.3 <$Revision: 1604373 $> 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 50000 requests Completed 100000 requests Completed 150000 requests Completed 200000 requests Completed 250000 requests Completed 300000 requests Completed 350000 requests Completed 400000 requests Completed 450000 requests Completed 500000 requests Finished 500000 requests Server Software: Jetty(9.3.z-SNAPSHOT) Server Hostname: localhost Server Port: 8443 SSL/TLS Protocol: TLSv1.2,ECDHE-RSA-AES128-SHA256,2048,128 Document Path: / Document Length: 1045 bytes Concurrency Level: 100 Time taken for tests: 21.166 seconds Complete requests: 500000 Failed requests: 0 Keep-Alive requests: 500000 Total transferred: 608500000 bytes HTML transferred: 522500000 bytes Requests per second: 23622.46 [#/sec] (mean) Time per request: 4.233 [ms] (mean) Time per request: 0.042 [ms] (mean, across all concurrent requests) Transfer rate: 28074.74 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 27.5 0 2215 Processing: 0 4 6.4 3 727 Waiting: 0 4 6.4 3 727 Total: 0 4 30.8 3 2219 Percentage of the requests served within a certain time (ms) 50% 3 66% 4 75% 4 80% 5 90% 7 95% 8 98% 11 99% 13 100% 2219 (longest request) gregw@Tile440: ~ [2038] ab -n 500000 -c 100 -k https://localhost:8843/ This is ApacheBench, Version 2.3 <$Revision: 1604373 $> 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 50000 requests Completed 100000 requests Completed 150000 requests Completed 200000 requests Completed 250000 requests Completed 300000 requests Completed 350000 requests Completed 400000 requests Completed 450000 requests Completed 500000 requests Finished 500000 requests Server Software: Jetty(9.3.z-SNAPSHOT) Server Hostname: localhost Server Port: 8843 SSL/TLS Protocol: TLSv1.2,ECDHE-RSA-AES256-GCM-SHA384,2048,256 Document Path: / Document Length: 1045 bytes Concurrency Level: 100 Time taken for tests: 9.548 seconds Complete requests: 500000 Failed requests: 0 Keep-Alive requests: 500000 Total transferred: 608500000 bytes HTML transferred: 522500000 bytes Requests per second: 52365.51 [#/sec] (mean) Time per request: 1.910 [ms] (mean) Time per request: 0.019 [ms] (mean, across all concurrent requests) Transfer rate: 62235.18 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 0 0 2.4 0 182 Processing: 0 2 0.8 2 76 Waiting: 0 2 0.8 2 76 Total: 0 2 2.8 2 196 Percentage of the requests served within a certain time (ms) 50% 2 66% 2 75% 2 80% 2 90% 3 95% 3 98% 4 99% 4 100% 196 (longest request) On 19 November 2015 at 14:30, Greg Wilkins <[email protected]> wrote: > > Some very early very unscientific performance numbers on unix socket > connector in head with haproxy. > > This is using siege over localhost. So that is HTTP/1.0 with no > keep-alive on the same machine hammering on a hello world servlet. Insert > all the usual disclaimers here about this being a very poor benchmark. > > Connectors were: > > 8080 HTTP direct > 8443 HTTPS direct > 8888 HTTP haproxy/unixsocket in tcp mode with proxy prototol > 8843 HTTPS haproxy/unixsocket in tcp mode with proxy protocol > > > here are the early results: > > > gregw@Tile440: ~ > [2016] siege -c 100 -b http://localhost:8080/ > ** SIEGE 3.0.8 > ** Preparing 100 concurrent users for battle. > The server is now under siege...^C > > Transactions: 329921 hits > Availability: 100.00 % > Elapsed time: 22.86 secs > Data transferred: 328.80 MB > Response time: 0.00 secs > Transaction rate: 14432.24 trans/sec > Throughput: 14.38 MB/sec > Concurrency: 59.76 > Successful transactions: 329921 > Failed transactions: 0 > Longest transaction: 15.02 > Shortest transaction: 0.00 > > > gregw@Tile440: ~ > [2017] siege -c 100 -b http://localhost:8888/ > ** SIEGE 3.0.8 > ** Preparing 100 concurrent users for battle. > > Transactions: 256987 hits > Availability: 100.00 % > Elapsed time: 24.47 secs > Data transferred: 256.11 MB > Response time: 0.00 secs > Transaction rate: 10502.12 trans/sec > Throughput: 10.47 MB/sec > Concurrency: 12.53 > Successful transactions: 256987 > Failed transactions: 0 > Longest transaction: 15.03 > Shortest transaction: 0.00 > > gregw@Tile440: ~ > [2018] siege -c 100 -b https://localhost:8443/ > ** SIEGE 3.0.8 > ** Preparing 100 concurrent users for battle. > > Transactions: 1016 hits > Availability: 100.00 % > Elapsed time: 24.10 secs > Data transferred: 1.01 MB > Response time: 2.20 secs > Transaction rate: 42.16 trans/sec > Throughput: 0.04 MB/sec > Concurrency: 92.82 > Successful transactions: 1016 > Failed transactions: 0 > Longest transaction: 3.94 > Shortest transaction: 0.84 > > gregw@Tile440: ~ > [2019] siege -c 100 -b https://localhost:8843/ > ** SIEGE 3.0.8 > ** Preparing 100 concurrent users for battle. > > Transactions: 8312 hits > Availability: 100.00 % > Elapsed time: 23.74 secs > Data transferred: 8.28 MB > Response time: 0.22 secs > Transaction rate: 350.13 trans/sec > Throughput: 0.35 MB/sec > Concurrency: 75.73 > Successful transactions: 8312 > Failed transactions: 0 > Longest transaction: 3.01 > Shortest transaction: 0.01 > > > So proxying HTTP is ~40% slower than direct. To be expected! > HTTPS direct really really suxs, specially for this test mode of 1 small > request per connection. > HTTPS haproxy is still slow in this mode, but almost an order of magnitude > better than direct! > > I hope to soon do some tests with a better test client. > > But if you want faster SSL, then this looks a promising direction. > > cheers > > > > -- > Greg Wilkins <[email protected]> CTO http://webtide.com > -- Greg Wilkins <[email protected]> CTO http://webtide.com
_______________________________________________ jetty-users mailing list [email protected] To change your delivery options, retrieve your password, or unsubscribe from this list, visit https://dev.eclipse.org/mailman/listinfo/jetty-users
