I decided to dust off ab
and see what the performance of the new blog is.
It’s running on a single Heroku Hobby Dyno, with 512m of RAM. It’s running nginx/1.9.7, Puma 3.11.2 and Ruby 2.3.4-p301. All of the files are static, generated by Jekyll.
I ran AB with a concurrency of 20 on it, and it handled it very well. There was no appreciable CPU load generated during the test. Average RAM jumped by about 100m during the test, and started to back off afterwards.
Server Software: Cowboy
Server Hostname: greg.nokes.name
Server Port: 443
SSL/TLS Protocol: TLSv1.2,ECDHE-RSA-AES128-GCM-SHA256,2048,128
TLS Server Name: greg.nokes.name
Document Path: /
Document Length: 33182 bytes
Concurrency Level: 20
Time taken for tests: 810.103 seconds
Complete requests: 10000
Failed requests: 0
Total transferred: 333830000 bytes
HTML transferred: 331820000 bytes
Requests per second: 12.34 [#/sec] (mean)
Time per request: 1620.205 [ms] (mean)
Time per request: 81.010 [ms] (mean, across all concurrent requests)
Transfer rate: 402.43 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 376 831 158.0 817 3948
Processing: 224 788 165.3 782 3855
Waiting: 206 560 247.5 632 3777
Total: 757 1619 226.7 1588 5781
Percentage of the requests served within a certain time (ms)
50% 1588
66% 1606
75% 1622
80% 1639
90% 1748
95% 1879
98% 2074
99% 2319
100% 5781 (longest request)
I then decided to turn it up to 11, and ran with a concurrency of 100. The max CPU load jumped up above five, and the RAM jumped by about 200m. Still not a bad showing. 18 rps is not bad for a single, small container.
Server Software: Cowboy
Server Hostname: greg.nokes.name
Server Port: 443
SSL/TLS Protocol: TLSv1.2,ECDHE-RSA-AES128-GCM-SHA256,2048,128
TLS Server Name: greg.nokes.name
Document Path: /
Document Length: 33182 bytes
Concurrency Level: 100
Time taken for tests: 536.508 seconds
Complete requests: 10000
Failed requests: 0
Total transferred: 333830000 bytes
HTML transferred: 331820000 bytes
Requests per second: 18.64 [#/sec] (mean)
Time per request: 5365.083 [ms] (mean)
Time per request: 53.651 [ms] (mean, across all concurrent requests)
Transfer rate: 607.64 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 395 3887 1175.6 4212 7946
Processing: 182 1450 1167.0 1054 5864
Waiting: 181 779 783.5 524 5740
Total: 761 5337 1212.1 5290 13795
Percentage of the requests served within a certain time (ms)
50% 5290
66% 5383
75% 5446
80% 5571
90% 6174
95% 6718
98% 9109
99% 9852
100% 13795 (longest request)