2009-02-14 18:29 - General
My last post was about some issues I had with the server that runs this site. I decided a while ago to learn Python, and also mentioned wanting to use Google App Engine (which is based on Python). That eventually morphed into learning Django, a web framework that runs on Python — when reading about GAE, I had heard about it supporting Django. While I've generally been against heavy frameworks and ORMs and templating systems, we learn by trying new things.
I've since started a real project, and learned that GAE doesn't quite support Django, and decided I'd rather learn the latter. It was thinking about adding yet another thing to this server that made me start to look into tweaking it's performance/reliability. And, of course, begin to screw it up. This site has been hosted on a dedicated server from ServerPronto since March of 2007, and on another ServerPronto machine (paid for by someone else at the time) for at least two years before that. I've been generally pleased with their service overall. But, they allow only two support tickets per calendar month (then start charging $15/pop for them), and only will issue a power cycle via support ticket. In bringing my own machine to the point that it needed reboots twice, I had already used that up, and gotten antsy.
I heard about CoreNetworks from a reddit comment a few months back. But I couldn't swallow the $70 setup charge, back then. Now I've switched. I get remote power cycling built into their control panel which isn't necessary very often, but is still a nice security blanket. Plus IP KVM, which came in very handy for the initial setup. Another thing that won't be useful so often (and, is only available manually upon request) but a very nice value add. They've also got bandwidth graphs (which look like they came from RRDtool):
I've never been quite interested enough to set up such a thing on my own. Getting it for free is just another nice little perk. Above is my bandwidth for the past 24 hours. Which gets me into why this is hosted on a real server, not out of my apartment. Pushing 4Gb of traffic a day would eat up a hefty chunk of the outgoing bandwidth of my consumer grade cable modem, and very possibly piss off Time Warner. (The labels have in and out reversed — probably because the router that logs it sees the traffic from the opposite perspective as my server.)
Along the way I took some tweaks, Trac is now running in FastCGI rather than mod_python. This (and probably something else along the way) has pushed apache down to about half of the per-process memory usage, on average. I also moved Trac into MySQL from sqlite; I'm not sure this helped so much, but it did help me notice many tens-of-thousands of seriously out of date records in Trac's "session" and "session_attribute" tables. As soon as I cleaned those out, performance jumped way up.
The migration across servers went relatively well. I only saw a few minutes of downtime for critical services. The old box handled some residual web and mail traffic for about a day, and that seems to have dwindled. I forgot about updating DNS entries at my registrar, and I'm still battling propagation delays with that. But generally a smooth process, since I took the time to do it right.