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.
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, I played a game on Concurr for the first time in a long time.
I have learned so much through this process, and there’s still a lot more to build, but it’s good to have the basics back in place.
Stuff that works really well:
- Move submission and cancellation
- Clicking on map
- Manual Tics
Short-term TODO list:
- Lots of bugfixes
- Get countdown clock setup again
- Spawn tic daemon from main
Medium-term goals include:
- Generalize the chat server long polling to send any type of game update
- Following from above, more client-side rendering in general
- Don’t assign home planets until game starts (instead of game join)
- Stabilize colors by game join order (or selection process?)
- List players in the game
- Chat in lobby
- Change all planets to have orbits instead of the current fixed map setup
- Game fast-forward (if all players agree)
- Game ending win condition
Given the limitations noted above, is anyone interested in a game? Let me know and we can set something up.
I’m having trouble sleeping, and the server behind some of the websites I administer went down a few days ago, so I’ve been on an upgrade tear. I just moved this blog from the industrious-but-odd win7/vmware/ubuntu hybrid minimus to a amazon micro instance (free for a year!), presumably virtualized under something like Xen.
All the sites that I’ve moved to this EC2 instance are noticably faster, and Checksum Arcanius is no exception: page generation times seem to be about 10x faster (based on WordPress’s self-reported times at the bottom of the page), and the page load just feels much faster overall.
This is my first foray back into AWS since I played around with it during my Amazon internship in 2008. The experience has been incredibly positive. Amazon deserves tons of credit for what they’ve done with AWS.