I spoke at WordCamp Cape Town on 15th of September 2011 about the FeedMyMedia.com infrastructure and scaling WordPress.
We have been researching how to setup an optimized WordPress Multisite install as well as how to scale the server resources to server hundreds of thousands of HTTP requests. Its so hard to tell when you will need to scale, my advice is to scale before you need to.
Figure out how much your system can handle before it cracks. Here is what we did to setup a self-monitoring optimized dedicated redundant server, which is not scalable (will get to that later) yet but at least a solid base. Read about FeedMyMedia over the coming weeks:
- HAProxy Load Balancer
- NGINX
- PHP-FPM
- MySQL
- MyISAM I/O Scalability
- HyperDB
- Batcache (WordPress Caching) + Memcached Object Cache
- File Synchronisation – Unison
- XCACHE (Opcode Caching)
Ashley Shaw (Scaling WordPress) Presentation
FeedMyMedia (The Setup!)
We have the following in our cluster:
- 3x Load Balancers
- 3x web-tier servers
- 1x Dedicated Database servers
- 1x Caching / Backup / Database server
- 2x Development servers
Our web-tier servers each run an optimised NGiNX configuration, php-fpm dynamic pool and a memcached instance, the three servers are synchronised using Unison.
The dedicated database server’s run Percona MySQL Server (which offers higher performance and stability over standard MySQL)
Caching we use the memcached object cache + WordPress Batcache (which utilizes the memcached-backend object cache)
STATS
- Launched 2009 at Linode
- Number of HTTP requests: FMM ~100k per week, M24 ~200K per week
- Number of MySQL queries: ~500 qps (queries per second)
- Number of sites hosted: ~100 Live Sites, ~670 Dev Sites
- Monthly bandwidth usage: ~1TB per month, excluding internal traffic between servers
