About four years ago, I did some optimization on the blog, drastically speeding up load times. Since then, I’ve made some more changes that helped even more. I’ll outline them here.
1/ I installed nginx and started using it as my primary webserver instead of apache httpd. Apache is great and easy to set up, but nginx is basically as easy these days and is much higher performance from what I’ve read and experienced.
2/ I installed php-fpm. One downside of nginx compared to apache is it doesn’t have a super-easy-to-install mod_php-like plugin, so this meant I needed a standalone php interpretter. I hooked up nginx to php-fpm following steps similar to these (I don’t remember which guide I actually consulted).
3/ I stopped using Memcache. Blasphemous, since I’m on the Memcache Team at Facebook, right? Not really. My blog runs on a single server, not across thousands. Memcached is high performance in a distributed system, but keeping everything within a process (eg, the php process) is even better. Instead, I’m now using an exclusively APC-based cache that is working better than the memcache-based cache.
These days, pages seem to generate in about a quarter second which is pretty hard to beat. The next step I’ll take will probably be installing hhvm, which recently got fastcgi support added. Maybe tenth-of-a-second load times are possible?
Among other things, I’ve let minimus go far too long without upgrades. It’s still running Ubuntu 9.04, which, while working, is old enough to be unsupported, especially since it’s not a long-term-service (LTS) release.
Upgrading from an unsupported release is, unfortunately, not officially supported, but some intrepid souls have figured out how to make it work anyway. Using answers from this thread on AskUbuntu, I have been able to get the process started. Of course, it remains to be determined how this will finish.
Sharks or glory lay ahead.
Today, a buddy mentioned that his blog wasn’t loading. His blog was hosted on one of the servers behind silverfir.net, minimus. It’s the one with the really interesting setup: Windows Server running Ubuntu Linux in a VM.
I luckily remembers how to log into the Windows server via remote desktop and poking around I discovered that something had gone wonky with the VM image. A reboot + disk scan didn’t fix the issue, so I created a new VM image and mounted the same disk images and things seems to start working reasonably well again.
Except that the port forwarding wasn’t working. Minimus is NAT’ed behind a very high-speed residential line, and the dd-wrt router it’s behind forwards a few relevant ports to the right place: 22 and 80 come to mind. Somehow, perhaps because of a new (virtual) MAC address, the forwarding wasn’t working any more.
I wanted to get the sites back online, but I didn’t have access to the router’s admin interface, so I came up with a glorious hack. Here’s what I did:
(1) ssh with port forwarding from minimus to nexus to forward port 5050 on nexus to port 80 on minimus: ssh -R 5050:localhost:80 nexus.silverfir.net
(2) on nexus, create an nginx config that forwards all the relevant sites to port 5050
(3) point the dns entries for all the relevant sites to nexus instead of minimus
It is working surprisingly well, but of course this is a super fragile state where one connection dropping will mean all the sites become unavailable again. If you care much about content hosted on minimus, you should probably take this chance to back it up.
College football’s BCS system was fraught with issues and I’m excited that a playoff is around the corner. Nevertheless, what a way to end! That was an amazing, exciting fourth quarter with just about everything that college football offers on display.
For all its problems, the BCS games did have a good number of amazing games. Today’s BCS Title Game was one of them, but none will ever stand out more than Boise State’s victory over Oklahoma in the 2007 Fiesta Bowl.
Really, it seems pretty obvious to me. Edgar Martinez should be inducted into the Baseball Hall of Fame. He was in my opinion the best designated hitter of all time — and many statisticians agree . Furthermore, he was total class act on and off the field, a player with good talent and greater discipline, and the kind of person that you want your kids playing little league to grow up to be like, whether they end up playing baseball after little league or not. This is the kind of person and baseball player who should be in the Hall of Fame uncontroversially.
It’s just a shame that the Hall of Fame voters have not yet figured this out.
More than ten years ago, I registered the silverfir.net domain name. From its humble beginnings as debian server at my parents house, to several stints at various friends’ houses, to the multi-state distributed network it is now (WA, CA, VA), it has served me and my friends well — and will continue to, long into the future.
In this time, silverfir has been the home of my blog and many friends’ blogs and personal website projects. Its various servers have served as file servers, a development platforms, web hosts, and learning devices. It has been hacked once, but there wasn’t much interesting to see, I’m glad to say.
From the whois records:
Domain Name: SILVERFIR.NET
Created On: 20-Mar-2003 00:01:37 UTC
Last Updated On: 25-Dec-2011 01:27:54 UTC
Expiration Date: 19-Mar-2015 23:01:37 UTC
Sponsoring Registrar: Vitalwerks Internet Solutions, LLC / No-IP.com
Registrant Name: McElroy, Ryan
Today marks the completion of my 4th year of employment at Facebook. From eager anticipation and the first week, though my graduation from bootcamp and my first faceversary, to two years of management experience and now a chance to go back to engineering, it has truly been a roller-coaster ride in every sense of the metaphor — fears and thrills, ups and downs, highs and lows.
I celebrated the day by helping my Ultimate Frisbee team, the Feral Cows, break seed, even if only for a day. I think tomorrow will be a somewhat less restrained celebration.
Though I don’t know what the future holds, for now I’m sticking with Facebook. To many more highs and not too many lows!