Actually, we have 2 gigs in the MySQL server now and 1 gig in the Apache server and are now on a DS3. MySQL really likes RAM, the more the merrier.

David mentioned sync'ing your Apache MaxClients and MySQL max_connections parameters. If you don't get those two setting consistent, you'll never get rid of the errors. If you run apps besides Apache that need MySQL connections (local processing, ad servers, etc.), you'll need to take that into account. There's a little bit of magic involved in getting everything tuned correctly. There are no hard and fast rules that I could find, it was a matter of trial and error. Our magic numbers are 210 MaxClients for Apache and 250 max_connections for MySQL. Also, persistent connections should be ON for best performance. If you get these two settings right, each Apache process will keep a MySQL connection open all the time .. much faster!

There's a free program out there called "mytop". It works like the unix "top" command, except it shows you MySQL processes. That's what I used to find and optimize the queries that were slowing things down for us. You can leave it running in a window and set it to sort by processor time. When you start seeing errors, check that window and see which query is slowing things down. Figure out what the query does and see if you can eliminate or optimize it. In our case, we've turned off full post tracking and search all forums. Both are huge database hogs.

Bigger iron never hurts either! I think your server is marginal for running both Apache and MySQL on the same box.

TheDieselStop.Com

Complete source of information for all diesel-powered Ford vehicles.