Linux Server and Website Performance Tuning
Over the past 6 years, the subject of performance tuning and optimization has become of increasing interest to me. Typically I work with websites hosted on Linux/UNIX platforms, but I also deal with other aspects of Linux server performance such as spam filtering, load balancing, DNS etc.
Performance is one of the most common problems that people come to me with; but the good news is that there is typically a lot of scope for improvement.
Linux Server Performance
On web servers, the main problems tend to be MySQL and Apache. Often MySQL hasn't been tuned at all, and this can have a dramatic impact on performance. Analysis of the slow query log can also reveal bottleneck queries that are holding everything else up. With Apache a good opcode cache (such as eAccelerator, XCache, APC) can help cut CPU usage associated with processing PHP scripts, while devoting a bit of time to the Apache configuration can reduce connection problems. In some instances I suggest just dumping Apache and going with Nginx.
Aside from web servers, spam filtering on mail servers tends to be the next big performance bottleneck. With spam accounting for around 90% of all email flowing over the Internet, spam filtering is essential, but the most popular software for doing that - SpamAssassin - has a reputation for being somewhat heavy. I've worked on many busy mail servers over the years, and have learnt a great deal about effective spam filtering strategies. Techniques such as SMTP-level blacklisting (DNSBL/RBL), grey listing, Bayes filtering, and redundant MX can stop a large proportion of spam early on, greatly reducing the work for tools like SpamAssassin.
Website Performance Tuning
Sadly page loading times seem to be a low priority for many webmasters, unless the site is really grinding to a halt; but with reports suggesting that shaving even a fraction of a second off loading times can have a dramatic impact on visitors and sales, and Google now taking loading times into consideration when ranking sites, the importance of a speedy site has never been higher.
I tend to tackle speed issues from both angles: optimizing the server (see above), then tackling web-specific problems. Typical areas that I look at are:
- Combining and minifying CSS and JavaScript
- Using CSS sprites to cut image requests
- Splitting content across sub-domains to increase parallel downloading
- Use of appropriate expiry headers and compression
- Resampling of images to achieve better compression
I have particular experience with vBulletin, Joomla, and Drupal, but can usually make considerable improvements to any site. In fact, I've become so obsessed with website performance, that it is the subject of my latest book, due to be published in 2011.
If you have a project that you feel I may be interested in, please feel free to contact me at pete@linuxbox.co.uk
Services
Code
- Ghoti: IRC Client for X11
- Dialog Quiz
- Apache Fingerprinting: mod_pof
- mod_miserable (Apache)
- Website Performance Testing
- Firefox Toolbar Tutorial
- SEO Postcodes (OS Commerce)
vBulletin
Data
Fun Stuff
pete@linuxbox.co.uk
Linuxbox.co.uk