I run Exchange as my home mail server. Unfortunately, the Windows Server 2008 machine that hosts Exchange is flaky. For the last 18 months it has shut down semi-randomly…meaning the shutdowns can occur at any time, but one will almost always occur between 7:55 and 8:00 AM, Wednesday morning. On daylight savings time or standard time :).
I’ve worked with Microsoft for almost a year trying to figure out what’s causing this. In the end, they decided it’s a hardware problem, or one not involving the operating system. Me, I have my doubts. It’s downright weird that the shutdowns occur so frequently at a particular time when there is no hardware event (or software event, to be fair). On the other hand, when the system dies, it really dies: no blue screen, no dump log, no nothing. It’s there one second and gone the next (I’ve watched it happen, several times — visually it looks like a flyback transformer dying in an old CRT TV, for those of you old enough to remember those crashes).
At one point Microsoft tech support told me I needed to set up a second computer to monitor and debug the server remotely. I balked because (a) this would require a special, $100+ USB cable, (b) the USB debugging interface wasn’t completely supported and (c) was unlikely (in my opinion, anyway) to gather any useful data given that the server died so quickly (higher-up Microsoft support personnel later agreed with that last assessment).
But this got me thinking about buying something to solve the problem. My home network interfaces to the world through a Linux server which, among other things, serves as a NAT/firewall, and happens to sit next to my Windows server (hey, I don’t drink a lot of wine, and the house came with a wine cellar room, so…). A bit of googling turned up the concept of a USB-interfaced and -powered electrical relay (I bought mine from Phidgets, www.phidgets.com — they have a bunch of cool products for tinkerers, including a single board computer I just have to find a use for!). I realized I could hook one up to my Linux server, which would trip the relay whenever a cron-job Python program couldn’t ping the Windows server. Voila! For about the same price as that not-sure-to-work special USB cable I have a way of automatically resurrecting my Windows server when it dies.
And, since Linux is incredibly reliable — I’ve only ever had the Linux server die when the AC power glitched, which, since I installed a UPS, means the Linux server only stops when I make it stop — my overall setup is now very reliable.
Who said Linux and Windows can’t play well together 🙂 ?