[development] Re: enterprise needs

Benson Wong mostlygeek at gmail.com
Mon Feb 27 00:34:56 UTC 2006


> All that said, we still haven't committed to Drupal long-term because for us
> there is  big issue that hasn't been fully solved: Drupal scalability.  I'm
> pretty confident that Drupal scales, but optimizing servers for Drupal is
> still a pretty rare skill.  (And, yes, we are diving into the forums on the
> topic.)

I think I blabbed about this at OSCMS in Vancouver, at Drupal for the
Enterprise discussion. My philosophy go for the lowest hanging fruit,
and work your way up the tree. You can probably quadrupal Drupal's
pages per second in under a half hour.

Here's my scaling tree. As you progress up the tree, you will find
that time, money, maintenance, headaches will all increase.

1. Use a PHP cache:

I found that using APC speeds up Drupal by a lot, 3 to 5 times the
pages view per second. This was _literally_ a 5 minute install (on
FreeBSD) for a 300% to 500% performance improvement. I think at that
point it was my dev servers SATA HDDs were the bottle neck. It sits
beside me and when I hit it with ab, I can hear the HDDs wrrrrr like
crazy.

2. Use mod_gzip (or ob_compress or whatever it is in php, I prefer
mod_gzip, or mod_deflate in Apache2)

The benefits of this are amazing, considering the minimal effort it
takes to implement. If doesn't matter if it takes Drupal 0.002 seconds
to generate a 40K of html, if it takes like 1 to 2 seconds for a
client to download it (more if using a modem). mod_gzip usually gives
a 10% to 80% compression depending on the size of pages. Amazing
results for 10 minutes of work.

3. Get a faster DB server. I'm thinking of 3x15K SCSI (raid 5), dual
way xeon mysql server from freebsdsystems.com for my next
installation. These things rip . Expensive  (~$5K to $7K) but fast. An
average Drupal dev charges like $100USD these days right? A super fast
db server is still more bang for your buck than 50 to 70hrs of code
performance tuning.

4. Get faster (or more) Web Servers. Maybe not the same specs as
above, but fast anyways.

5. Get a load balancer, or a reverse HTTP proxy (squid) to distribute the load

6. Do MySQL replication

7. Profile / tune Drupal's code (shudder).

Ben.


More information about the development mailing list