I’m simultaneously impressed and annoyed with DreamHost (current home of Willfe.com). Their control panel is top-notch, their flexibility is astounding (as I’ll discuss further a bit on in this post, I’m even permitted to roll my own PHP builds and shove a cache like APC behind it), and on the whole performance has been pretty good for shared hosting.
But it’s still shared hosting. Shared hosting means my domain lives on the same physical server as a few hundred other accounts, and quite possibly a few thousand other domains. DreamHost separates MySQL from web servers, so the database sits on another machine (two points of failure, yay!). This is a good-in-theory kind of thing — in practice, if the web server slows down, my site slows down; if the database server slows down, my site (and every other site that uses that database server) slows down which ultimately slows the web server down.
The bigger and much more irritating “feature” is DreamHost’s “process reaper,” which obeys some unspecified set of rules in hunting down long-running, CPU-hogging, or memory-hogging processes and killing them (we’re talking “kill -9” here, not a “hey you really need to stop now but I’ll give you time to shut down gracefully” kind of kill).
It’s not usually a problem (I’d rather see a rogue/slow PHP request get nuked than have it continue grinding away at nothing), except when it comes time to follow their own damned instructions to roll your own PHP build. Their sample scripts, which even invoke “nice” to make sure these processes only occupy idle time on the CPU, still end up getting killed. You can never actually build the damned thing with the scripts provided, because they intentionally remove older attempts to build the pieces that make PHP work. So if any part of the process dies, you get to start over. Yay.
What sucks about this isn’t having to do it by hand (I’m fine with that). What sucks is to actually get this accomplished, I have to hold its hand all the way through the process. I’m still using “nice” for this (since I don’t want to actually clobber anybody’s sites or bring pain to the server), but it just means I get to run “nice make” over and over and over again (make understands interruptions and will resume a compile at the spot where it died/got killed) until it’s all done.
The upshot of all this is, with a touch of luck (and a metric assload of patience), the site will ultimately run a bit faster, with all scripts running from an object cache instead of having to load, parse, and compile each time.
Cross your fingers, but if you cramp up, let it go for a bit. This will take awhile 
Comments
"Annoyed" != "Leaving"
It’s worth noting here I’m not planning to relocate the site or anything; I’m not actually bagging on DreamHost here except to bitch and moan pointlessly about their process reaper. I just wish it’d actually not kill nice’d processes. The whole point of “nice” is to keep something in the background until the system literally has nothing else to work on.
Not so fast...
Well, come to think of it, I am now considering relocating at least the photo gallery, and quite possibly willfe.com itself. My own damned desktop and crappy cable modem have been more routinely reliable and (much) faster than their servers lately have been. I understand the design choices they make to try to keep things running reasonably well for most of their users, but everything I’m seeing lately points to one big problem that any web hosting company is quite loathe to actually fix (because it’s expensive to fix “correctly”): overcrowding. The server this is sitting on right now is just too packed with people. I suspect the MySQL server, a separate machine from the one hosting the site itself, is equally overloaded.
High load averages are to be expected on a busy machine. Right now (as I type this) the web hosting server is actually “only” showing a load average of 5.69. I’ve seen it as high as 80 (which is borderline “your machine is about to fall over dead and you should feel lucky it was able to print the numeral ‘80’ before it croaked”) and a more realistic “average” is about 20.
I haven’t made any decisions yet firmly, though I am actively mirroring everything on the sites so I can start experimenting with bringing at least the gallery online from home. It’s not like it’s a high-traffic site and my poor overworked cable modem can handle the bandwidth requirements of a simple gallery. Bluntly, even with bandwidth limitations it’ll run faster at home than it has been at Dreamhost.
Post new comment