wiki:LoadTimes

Version 22 (modified by chris, 3 years ago) (diff)

--

Site Load Times

This page is to document the time the site takes to load.

2013-05-29

The slowness documented yesterday, LoadTimes#a2013-05-28 was due to redis being unavailable due to the password missing from the /data/conf/global.inc file, this was fixed on ticket:554#comment:5, following the fix the speed of the site is back to normal:

ab -v 4 -n 200 -c 10 -H "Accept-Encoding: gzip" http://www.transitionnetwork.org/

LOG: Response code = 200
Completed 200 requests
Finished 200 requests


Server Software:        nginx
Server Hostname:        www.transitionnetwork.org
Server Port:            80

Document Path:          /
Document Length:        10049 bytes

Concurrency Level:      10
Time taken for tests:   0.197 seconds
Complete requests:      200
Failed requests:        128
   (Connect: 0, Receive: 0, Length: 128, Exceptions: 0)
Write errors:           0
Total transferred:      2143788 bytes
HTML transferred:       2007624 bytes
Requests per second:    1016.38 [#/sec] (mean)
Time per request:       9.839 [ms] (mean)
Time per request:       0.984 [ms] (mean, across all concurrent requests)
Transfer rate:          10639.16 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.2      0       1
Processing:     2    9   7.4      7      79
Waiting:        2    8   7.4      6      78
Total:          2    9   7.4      7      80

Percentage of the requests served within a certain time (ms)
  50%      7
  66%      9
  75%     11
  80%     12
  90%     17
  95%     22
  98%     26
  99%     28
 100%     80 (longest request)

2013-05-28

The front page index.php now takes around 5 seconds to generate, for example, following is a test done from ParrotServer, see ticket:554 for more on this issue:

ab -n 1 -v 4 -H "Accept-Encoding: gzip" http://www.transitionnetwork.org/ 

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 www.transitionnetwork.org (be patient)...INFO: POST header == 
---
GET / HTTP/1.0
Accept-Encoding: gzip
Host: www.transitionnetwork.org
User-Agent: ApacheBench/2.3
Accept: */*


---
LOG: header received:
HTTP/1.1 200 OK
Server: nginx
Date: Tue, 28 May 2013 18:08:04 GMT
Content-Type: text/html; charset=utf-8
Connection: close
Vary: Accept-Encoding
X-Backend: C
X-Allow-Redis: YES
X-Purge-Level: 6
X-Cookie-Domain: .transitionnetwork.org
X-Redis-Prefix: www.transitionnetwork.org_
X-Accel-Expires: 
Cache-Control: public, max-age=0
Last-Modified: Tue, 28 May 2013 18:07:58 +0000
Expires: Sun, 11 Mar 1984 12:00:00 GMT
Vary: Cookie
X-Engine: Octopus 1.0 ET
X-Device: normal
X-Speed-Cache: EXPIRED
X-Speed-Cache-Key: /
X-NoCache: Cache
X-GeoIP-Country-Code: GB
X-GeoIP-Country-Name: United Kingdom
X-Server-Name: www.transitionnetwork.org
Content-Encoding: gzip

�
LOG: Response code = 200
..done


Server Software:        nginx
Server Hostname:        www.transitionnetwork.org
Server Port:            80

Document Path:          /
Document Length:        10052 bytes

Concurrency Level:      1
Time taken for tests:   5.696 seconds
Complete requests:      1
Failed requests:        0
Write errors:           0
Total transferred:      10735 bytes
HTML transferred:       10052 bytes
Requests per second:    0.18 [#/sec] (mean)
Time per request:       5695.665 [ms] (mean)
Time per request:       5695.665 [ms] (mean, across all concurrent requests)
Transfer rate:          1.84 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.0      0       0
Processing:  5695 5695   0.0   5695    5695
Waiting:     5695 5695   0.0   5695    5695
Total:       5696 5696   0.0   5696    5696

For comparison with older tests documented on this page:

ab -v 4 -n 200 -c 10 -H "Accept-Encoding: gzip" http://www.transitionnetwork.org/

Server Software:        nginx
Server Hostname:        www.transitionnetwork.org
Server Port:            80

Document Path:          /
Document Length:        9768 bytes

Concurrency Level:      10
Time taken for tests:   5.539 seconds
Complete requests:      200
Failed requests:        1
   (Connect: 0, Receive: 0, Length: 1, Exceptions: 0)
Write errors:           0
Total transferred:      2090586 bytes
HTML transferred:       1953787 bytes
Requests per second:    36.11 [#/sec] (mean)
Time per request:       276.929 [ms] (mean)
Time per request:       27.693 [ms] (mean, across all concurrent requests)
Transfer rate:          368.61 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.2      0       1
Processing:     2   35 391.0      6    5537
Waiting:        2   35 391.0      5    5537
Total:          2   36 391.1      6    5538

Percentage of the requests served within a certain time (ms)
  50%      6
  66%      9
  75%     11
  80%     13
  90%     15
  95%     21
  98%     29
  99%     44
 100%   5538 (longest request)

Requesting the front page 200 times running 10 concurrent processes over time -- the site is now roughly back to the speed it had when it was running with apache without varnish, two years ago:

2013-01-31

A script was written to test the nearby post code search, see ticket:466#comment:55

2013-01-28

Comparing the existing live server, wiki:NewLiveServer with the new wiki:PuffinServer.

apache bench

ab -v 4 -n 200 -c 10 -H "Accept-Encoding: gzip" http://www.transitionnetwork.org/

Server Hostname:        www.transitionnetwork.org
Server Port:            80

Document Path:          /
Document Length:        10272 bytes

Concurrency Level:      10
Time taken for tests:   0.253 seconds
Complete requests:      200
Failed requests:        0
Write errors:           0
Total transferred:      2150344 bytes
HTML transferred:       2058286 bytes
Requests per second:    790.39 [#/sec] (mean)
Time per request:       12.652 [ms] (mean)
Time per request:       1.265 [ms] (mean, across all concurrent requests)
Transfer rate:          8298.90 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        1    3   1.0      3       5
Processing:     4    9   9.3      6      48
Waiting:        1    5   7.9      3      44
Total:          4   12   9.3      9      52

Percentage of the requests served within a certain time (ms)
  50%      9
  66%     10
  75%     10
  80%     11
  90%     15
  95%     38
  98%     46
  99%     47
 100%     52 (longest request)

ab -v 4 -n 200 -c 10 -H "Accept-Encoding: gzip" http://newlive.puffin.webarch.net/

Server Hostname:        newlive.puffin.webarch.net
Server Port:            80

Document Path:          /
Document Length:        9248 bytes

Concurrency Level:      10
Time taken for tests:   0.262 seconds
Complete requests:      200
Failed requests:        0
Write errors:           0
Total transferred:      1973433 bytes
HTML transferred:       1849600 bytes
Requests per second:    762.21 [#/sec] (mean)
Time per request:       13.120 [ms] (mean)
Time per request:       1.312 [ms] (mean, across all concurrent requests)
Transfer rate:          7344.61 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    1   0.5      1       3
Processing:     4   12  13.2      8     144
Waiting:        2   10  13.3      6     143
Total:          5   13  13.1      9     145

Percentage of the requests served within a certain time (ms)
  50%      9
  66%     12
  75%     15
  80%     16
  90%     24
  95%     33
  98%     40
  99%     86
 100%    145 (longest request)
Server Hostname:        tn.i-jk.co.uk
Server Port:            80

Document Path:          /
Document Length:        10881 bytes

Concurrency Level:      10
Time taken for tests:   0.569 seconds
Complete requests:      200
Failed requests:        0
Write errors:           0
Total transferred:      2319227 bytes
HTML transferred:       2196972 bytes
Requests per second:    351.57 [#/sec] (mean)
Time per request:       28.444 [ms] (mean)
Time per request:       2.844 [ms] (mean, across all concurrent requests)
Transfer rate:          3981.31 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        7    8   0.3      8       9
Processing:    18   20   3.1     19      50
Waiting:       10   11   3.2     10      42
Total:         26   28   3.2     27      58

Percentage of the requests served within a certain time (ms)
  50%     27
  66%     27
  75%     27
  80%     28
  90%     28
  95%     32
  98%     40
  99%     44
 100%     58 (longest request)

2011-07-13

The varnish settings for the dev server and the live server are exactly the same. However the dev server is serving pages via varnish:

lynx -head -dump http://dev.transitionnetwork.org/
X-Varnish-Cache: HIT

And the live server is not:

lynx -head -dump http://www.transitionnetwork.org/
X-Drupal-Cache: HIT
X-Varnish-Cache: MISS

Note the X-Varnish-Cache: HIT header from the dev server and the X-Drupal-Cache: HIT from the live server.

live server

apache bench

ab -v 4 -n 200 -c 10 -H "Accept-Encoding: gzip" http://www.transitionnetwork.org/

Time taken for tests:   3.417 seconds
Requests per second:    58.53 [#/sec] (mean)
Time per request:       170.863 [ms] (mean)
Percentage of the requests served within a certain time (ms)
  50%    135
  66%    179
  75%    214
  80%    247
  90%    325
  95%    407
  98%    638
  99%    705
 100%    795 (longest request)

curl

curl -o /dev/null https://www.transitionnetwork.org/
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 30668    0 30668    0     0   449k      0 --:--:-- --:--:-- --:--:-- 14.6M

2011-07-08

dev server

HTTPS tests only.

pingdom

Times out after loading just a few objects.

curl

Varied between 1 and 7 seconds, for example:

curl -o /dev/null https://dev.transitionnetwork.org/
                                 Dload  Upload   Total   Spent    Left  Speed
100 30808    0 30808    0     0  16579      0 --:--:--  0:00:01 --:--:-- 38413

2011-07-07

The following results were generated with https redirecting to http so they are invalid for https.

Dev Server

Running Varnish on port 80 and apache on 443.

apache bench

On port 80, this is with the first hit being passed to apache:

ab -v 4 -n 200 -c 10 -H "Accept-Encoding: gzip" http://dev.transitionnetwork.org/

Time taken for tests:   4.302 seconds

Percentage of the requests served within a certain time (ms)
  50%      7
  66%      8
  75%      9
  80%     55
  90%    753
  95%   2988
  98%   2991
  99%   2991
 100%   2993 (longest request)

This is for subsequent requests which don't hit apache:

Time taken for tests:   0.183 seconds

Percentage of the requests served within a certain time (ms)
  50%      7
  66%      7
  75%      8
  80%      8
  90%      9
  95%     19
  98%     40
  99%     41
 100%     41 (longest request)

pingdom

Wow, compare this with the last test!

Load Impact

HTTP: http://loadimpact.com/result/dev.transitionnetwork.org/-d25171ed06575a89080ba08b0ab371bc

Clients		10	20	30	40	50
Delay (ms)	449	495	443	433	465

It won't run the HTTPS test today without paying them.

curl

For port 80 we consistently get around 30 mili seconds via Varnish:

curl -o /dev/null http://dev.transitionnetwork.org/
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 30856  100 30856    0     0  2327k      0 --:--:-- --:--:-- --:--:-- 28.4M

On 3 different machines this ism't working, I don't understand why:

curl -o /dev/null https://dev.transitionnetwork.org/
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:--  0:00:01 --:--:--     0

2011-07-05

Summary for the live server:

  • The front page, HTML only of the live site, not running varnish takes around 0.1 seconds to load
  • The front page of the live site, plus css / js / images etc takes over 30 seconds via pingdom

Issues for the live server:

  • ETags and one CSS expression

Summary for the dev server:

  • Very fast on port 80 via Varnish, less than two seconds for the page and all objects
  • Very slow for port 443, 7 seconds just for the HTML

Issues for the dev server:

  • Speed up port 443 accesses!
  • Etag and gzipping of js files

Detailed info follows:

Live Server

This is before Varnish has been deployed and also tests have only be done using http as https requests get a 302 redirect back to http.

apache bench

Requests were done from another machine in the same rack, 200 requests for the front page, 10 at a time, using http, this was done several times and the results below are for an average result, some were faster and some were slower, the first request took about 4 seconds and almost all the rest were less that 0.1 second:

ab -v 4 -n 200 -c 10 -H "Accept-Encoding: gzip" http://www.transitionnetwork.org/

LOG: Response code = 200
LOG: header received:
HTTP/1.1 200 OK
Date: Tue, 05 Jul 2011 12:02:58 GMT
Server: Apache
X-Drupal-Cache: HIT
Etag: "1309867375-0"
Cache-Control: public, max-age=0
Last-Modified: Tue, 05 Jul 2011 12:02:55 +0000
Expires: Sun, 11 Mar 1984 12:00:00 GMT
Vary: Cookie,Accept-Encoding
Content-Encoding: gzip
Content-Length: 7727
Connection: close
Content-Type: text/html; charset=utf-8

Time taken for tests:   5.131 seconds
Complete requests:      200

Percentage of the requests served within a certain time (ms)
  50%     57
  66%     66
  75%     74
  80%     77
  90%    100
  95%   4014
  98%   4019
  99%   4039
 100%   4050 (longest request)

YSlow

  • The page has a total of 29 HTTP requests and a total weight of 421.8K bytes with empty cache
  • This page has 3 external stylesheets. Try combining them into one.
  • This page has 17 external background images. Try combining them with CSS sprites.
  • There are a total of 1 CSS expression:
  • There are 27 components with misconfigured ETags (all css js and images)

pingdom

The test here will run for 30 secs max and it generally takes longer than that to load the front page, in part because (as far as I can see) pingdom loads all images referenced in the CSS even if the pages doesn't use them. Some stats:

  • Total objects: 76 (677.5 KB)
  • (X)HTML: 1 (32.8KB)
  • CSS: 3 (92.7KB)
  • Scripts: 1 (150.7KB)
  • Images: 71 (401.2KB)

Dev Server

Running Varnish on port 80 and apache on 443.

apache bench

On port 80, this is with the first hit being passed to apache:

ab -v 4 -n 200 -c 10 -H "Accept-Encoding: gzip" http://dev.transitionnetwork.org/

LOG: Response code = 200
LOG: header received:
HTTP/1.1 200 OK
Server: Apache
Cache-Control: public, max-age=3600
Last-Modified: Tue, 05 Jul 2011 12:51:05 +0000
Expires: Sun, 11 Mar 1984 12:00:00 GMT
Vary: Cookie,Accept-Encoding
ETag: "1309870265"
Content-Encoding: gzip
Content-Type: text/html; charset=utf-8
Content-Length: 7353
Date: Tue, 05 Jul 2011 12:51:07 GMT
X-Varnish: 1553439536 1553439337
Age: 0
Via: 1.1 varnish
Connection: close
X-Varnish-Cache: HIT

Time taken for tests:   1.616 seconds
Complete requests:      200

Percentage of the requests served within a certain time (ms)
  50%      3
  66%      3
  75%      3
  80%      3
  90%      4
  95%      4
  98%      5
  99%   1412
 100%   1412 (longest request)

This is for subsequent requests which don't hit apache:

Time taken for tests:   0.149 seconds
Complete requests:      200

Percentage of the requests served within a certain time (ms)
  50%      7
  66%      7
  75%      8
  80%      8
  90%      9
  95%      9
  98%     10
  99%     11
 100%     12 (longest request)

YSlow

pingdom

Load time between 1 and 1.5 seconds *total*!

  • Total objects: 72 (809.7 KB)
  • (X)HTML: 1 (31.4KB)
  • CSS: 3 (95.8KB)
  • Scripts: 1 (113.2KB)
  • Images: 61 (364.7KB)
  • Other: 6 (204.7KB)

However for HTTPS it times out before loading many objects:

curl

For port 80 we consistently get around 30 mili seconds via Varnish:

curl -o /dev/null http://dev.transitionnetwork.org/

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 32177  100 32177    0     0  2714k      0 --:--:-- --:--:-- --:--:-- 29.7M

Unlike ab we can use curl for port 443, just loading the front page HTML file takes around 7 seconds:

curl -o /dev/null https://dev.transitionnetwork.org/

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 32076    0 32076    0     0   4545      0 --:--:--  0:00:07 --:--:--  8172