Archive for October, 2008

WordPress Caching

Saturday, October 4th, 2008

I’ve just discovered that WordPress and a couple of other sites I run casually tax my CPU really highly running the PHP scripts (the database is on a separate server). I know WP can cache, so I decided to play around. The result? WP Super-Cache results in a (more than) 10x speed improvement just using the “half cache”. What it’s doing is writing the database queries to disk, so it doesn’t have to figure out the result of the query every time it processes the page.

Here are the actual results.

I’ve just discovered that WordPress and a couple of other sites I run casually tax my CPU really highly running the PHP scripts (the database is on a separate server). I know WP can cache, so I decided to play around. The result? http://ocaoimh.ie/wp-super-cache/ results in a 10x speed improvement just using the “half cache”. What it’s doing is writing the database queries to disk, so it doesn’t have to figure out the result of the query every time it processes the page.

By the way, the CPU is a K6-2 333MHz. I imagine the gain would be smaller on a faster CPU, as a faster CPU processes non-cached results faster => smaller difference between cached / non-cached results => smaller gain.

Here are the actual results.

Results with no cache:

#ab -n 30 "http://www.sirspanky.com/wp/"This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright 2006 The Apache Software Foundation, http://www.apache.org/

Benchmarking www.sirspanky.com (be patient).....done

Server Software:        Apache/2.2.3
Server Hostname:        www.sirspanky.com
Server Port:            80

Document Path:          /wp/
Document Length:        56172 bytes

Concurrency Level:      1
Time taken for tests:   170.354564 seconds
Complete requests:      30
Failed requests:        0
Write errors:           0
Total transferred:      1692660 bytes
HTML transferred:       1685160 bytes
Requests per second:    0.18 [#/sec] (mean)
Time per request:       5678.486 [ms] (mean)
Time per request:       5678.486 [ms] (mean, across all concurrent requests)
Transfer rate:          9.70 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        1    1   0.2      1       2
Processing:  5465 5676 349.0   5578    7057
Waiting:     3255 3422 236.1   3378    4581
Total:       5466 5677 349.1   5579    7058

Percentage of the requests served within a certain time (ms)
  50%   5579
  66%   5602
  75%   5610
  80%   5635
  90%   6010
  95%   6747
  98%   7058
  99%   7058
 100%   7058 (longest request)

Results with half cache:

#ab -n 30 "http://www.sirspanky.com/wp/"
This is ApacheBench, Version 2.0.40-dev <$Revision: 1.146 $> apache-2.0
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Copyright 2006 The Apache Software Foundation, http://www.apache.org/

Benchmarking www.sirspanky.com (be patient).....done

Server Software:        Apache/2.2.3
Server Hostname:        www.sirspanky.com
Server Port:            80

Document Path:          /wp/
Document Length:        56226 bytes

Concurrency Level:      1
Time taken for tests:   8.188850 seconds
Complete requests:      30
Failed requests:        29
(Connect: 0, Length: 29, Exceptions: 0)
Write errors:           0
Total transferred:      1695860 bytes
HTML transferred:       1687940 bytes
Requests per second:    3.66 [#/sec] (mean)
Time per request:       272.962 [ms] (mean)
Time per request:       272.962 [ms] (mean, across all concurrent requests)
Transfer rate:          202.23 [Kbytes/sec] received

Connection Times (ms)
min  mean[+/-sd] median   max
Connect:        1    1   0.2      1       2
Processing:    55  271 1122.7     61    6215
Waiting:       39  254 1116.1     45    6163
Total:         56  272 1122.9     62    6217

Percentage of the requests served within a certain time (ms)
50%     62
66%     63
75%     64
80%     69
90%    126
95%    133
98%   6217
99%   6217
100%   6217 (longest request)

As you can see, only 1 request (3%) took 6217ms to load with the cache, then the rest load in <200ms. Without the cache, half of the queries take longer than 5579ms and the other half…well they probably take 5578ms ;)

Ubuntu Is Not Linux

Friday, October 3rd, 2008

I use Ubuntu on my desktop box. I downloaded a backup script to trial. I thought, my work is on my desktop box, and I want to backup it up to a remote machine. So I downloaded the script to my desktop box, configured it, ran it, and it didn’t work. I couldn’t be bothered checking the debug output, so I just turned on the email error messages and sent the errors through to my email for me to review.

No email arrived. I thought, ok, maybe I’ve messed up the DNS on my local network for my mail server. Nope. All good. I also tried sending to a different account, but no email arrived. I checked the mail queue, to see if it was being sent out via the local SMTP as is often done, only to find that Ubuntu did not include an MTA!

Linux with an MTA is just not Linux. It’s just silly.