Optimizing Server Performance, Part 3
April 3, 2008
Part 3 of 3: Part 1 | Part 2 | Part 3
This is part 3 in a series of posts covering server performance optimization. You should try to follow these tips in order; i.e. start at the top of post one and work you way through each post. If you’re coming here from anywhere other than Part 1 of this post, head there first before continuing on.
Most of the optimization tips presented herein will provide little incremental value. We’ve now reached the point of diminishing returns on our server tweaks.
Install Post Query Accelerator
Important: if you are using WordPress v2.1 or above, skip this step. This tweak is already contained in newer versions of WordPress.
The Post Query Accelerator plug-in improves your server’s perform-ance by ensuring that the MySQL query cache is able to cache query requests for posts.
- Download the Post Query Accelerator plug-in.
- Upload and extract it in your plug-ins folder.
- Activate it in your WordPress administrative panel.
Edit Your Theme or Plug-ins
- Move comments to a separate page from your posts.
- Paginate comments.
- Optimize your plug-ins. Some are poorly written unfortu-nately.
- Optimize your themes: many themes query for information that is static in nature. If it’s static, it should be treated as such, and be hard-coded. Note that this tip would have a huge im-pact if we hadn’t already taken care of caching from the start.
Compress JavaScript and CSS
Use a CSS compressor to remove white space and comments. Try this one at Arantius, or the one at CSS Drive.
Use a JavaScript obfuscator to remove white space and comments, and shorten method and variable names. Or minify your code with jsMin. The space saved is a bit less than with obfuscation, but it could lead to fewer debugging problems down the road.
Place JavaScript at the Bottom of the Page
While a script is downloading, it will block downloading of other page components, even if those components are on different servers. Moving scripts to the bottom of the page alleviates this problem, but obviously not every script can or should be moved to the page bottom.
Additional Security
This is not an optimization technique. In fact, using this technique will hurt performance on your server (not for everyone; just for you when you are using your administrative panel). However, if you are beginning to receive high traffic, it might be a wise idea to harden the security on your WordPress installation.
The Admin SSL plug-in for WordPress will secure admin and login pages via SSL. You will need access to your own or a shared SSL certificate. Installation and usage instructions can be found on the developer’s site.
Use eAccelerator
“eAccelerator is a free open-source PHP accelerator, optimizer, and dynamic content cache. It increases the performance of PHP scripts by caching them in their compiled state, so that the overhead of compil-ing is almost completely eliminated. It also optimizes scripts to speed up their execution. eAccelerator typically reduces server load and increases the speed of your PHP code by 1-10 times.”
Tune your MySQL Database
MySQL performance tuning is a bit of a mystical art, and conflicting advice is common. Use these settings at your own risk, and only use them on a capable machine:
- connect_timeout = 5
- join_buffer_size = 1M
- key_buffer_size=64M
- max_allowed_packet = 16M
- max_connect_errors = 20
- max_connections = 500
- max_heap_table_size = 128M
- myisam_sort_buffer_size = 64M
- read_buffer_size = 1M
- read_rnd_buffer_size = 2M
- query_cache_limit = 8M
- query_cache_size =128M
- query_cache_type = 1
- sort_buffer_size = 16M
- table_cache = 512
- thread_cache_size = 256
- tmp_table_size = 64M
- wait_timeout = 14400
Tune Apache
IBM’s developerWorks is always a great source of information, including this article on Apache tuning.
Conclusion
Preparing for an expected traffic spike or responding to a traffic spike is a great problem to have, and you’re in good company. I hope these tips get you our or keep you from getting into a jam. If you have any additional tips, please post in the comments. I’m all ears.




Recent Comments