eAccelerator Installation on Debian

Today’s post covers the joys and benefits of opcode caching.  If you have a very active site, this caching method can provide a great deal of relief to your servers by significantly reducing load averages and CPU utilization.

How does it work?
It’s quite simple, actually.  Without caching configured, each time a PHP-based page is requested by a user, the server gathers all of the needed files and “compiles” them into a result which it can understand and deliver.  This result is known as “opcode”.

The technique of opcode caching preserves this generated code into a cache so compilation only needs to happen once and then can be used over and over again for numerous requests by numerous users.

Why eAccelerator?
Several PHP caching choices exist including APC, Zend, and XCache.  I’ve chosen eAccelerator based on numerous reports such as this one which show its distinct performance advantage and also in large part due to the personal recommendation of seasoned server architects such as RackerHacker.

Installation
Debian Lenny doesn’t include an apt-get package for eAccelerator so we’ll need to compile from source.  Luckily, this isn’t as tricky as it sounds.  Here we go!

Download and extract:

wget http://bart.eaccelerator.net/source/0.9.6.1/eaccelerator-0.9.6.1.tar.bz2
tar xjf eaccelerator-0.9.6.1.tar.bz2

Compile and install:

cd eaccelerator-0.9.6.1
apt-get install php5-dev
phpize
./configure
make
make install
cp eaccelerator.ini /etc/php5/apache2/conf.d/eaccelerator.ini

Verify installation:

php -v
PHP 5.2.6-1+lenny8 with Suhosin-Patch 0.9.6.2 (cli) (built: Mar 14 2010 09:07:33)
Copyright (c) 1997-2008 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2008 Zend Technologies
 with eAccelerator v0.9.6.1, Copyright (c) 2004-2010 eAccelerator, by eAccelerator

Finish up:

/etc/init.d/apache2 reload

That’s it!  My load averages have dropped significantly on the load-balanced web servers I manage.  We went from 4-5 with spikes to 25 down to roughly 0.5 with spikes to 2.  As always, reach out to me via email or in the comments section if you have any questions.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>