Blog Preformance

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)