MySQL crashed on me sometime late Sunday or early Monday. Somehow the server managed to serve up 5-6 pages per day in a catatonic state on Monday and Tuesday. So I spent my lunch break digging into the problem.
The good news is, I got the server running a lot better. I tweaked Apache and MySQL, and when the system is idle or nearly idle, memory usage sits below 384 MB, which is reasonable for a Linux box with a couple of services running on it. Under load, I’ve seen memory usage approach 800 MB, but it settles down pretty quickly and drops back to the 384 MB range soon after traffic dies down. The problem in the past was that under some conditions, it didn’t settle down, and race conditions caused it to run out of memory.
While I was at it, I did some database optimization. The memory tweaks got the server performing a lot better, and that got me hungry for more. I found a plugin called WP-DBManager that allows database repair and optimization without having to get down and dirty in MySQL. Better yet, it allows you to schedule that maintenance, to keep your performance where it needs to be.
This server is still underpowered, and I have plans to replace it, but those plans keep getting bumped by other priorities. In the meantime, at least it’s running as well as it ever did, if not better.