MM's server

As of Fall 2007, All of Michal Marcinkowski's games and development projects are hosted on a separate server. Previously, everything was hosted on various servers owned by FliesLikeABrick and EnEsCe, plus some shared hosting that was used for the Soldat homepage. The Soldat Forums were also recently changed from using an ASP-based Snitz Forums installation to SMF in late Spring 2006. At this point the forums were also moved from some very unreliable shared ASP hosting to an account on one of FliesLikeABrick's webservers.

Server Specifications:
 * Dual Dual-core 2.4GHz Opteron 280 processors
 * 4GB DDR PC3200 RAM
 * Based on a Tyan TA-26 barebones
 * 4x73GB 10,000 RPM SCSI drives.
 * 1x73GB for / - Ext3 filesystem
 * 3x73GB for /home in RAID5 - XFS filesystem
 * 100mbit network uplink
 * Currently running Ubuntu 6.06.1 LTS AMD64

Currently Hosting:
 * The Soldat Homepage
 * The Official Soldat Forums
 * MM's Blog
 * The development repositories for all MM projects
 * Something else secret

Web Hosting
The server has two IPs assigned to it, one for dynamic content (67.106.77.7) and one for static content(67.106.77.200). This blog post by FliesLikeABrick details the configuration. Some excerpts:

Originally I just had MM’s new server set up with an Apache installation using mpm_prefork and 1024 worker slots. From the 1.4.0 release experience, I learned a lot about how Apache handles load and how to tweak the prefork settings in a meaningful way. Even then (I had a max of 512 workers), I was running out of workers even though I had as much static content (images, downloads, etc) as possible linked off to another server. Now that he has his own server, I can do simple yet effective things to greatly increase the serving capacity of it. For general information, the server is a dual dual core, 4×2.4GHz Opteron machine with 4GB of RAM. ...

During the 1.4.0 release, most of the traffic that actually took up the available workers was traffic on the Soldat forums, plus remaining static content serving. Since Apache is already configured to host the dozen or so sites for MM’s various projects, I’d rather leave Apache responsible for that and try to figure out a way to handle his static content more effectively. Now that his server is responsible for all of his hosting, offloading the static content to another machine isn’t an option.

I found lighttpd, a webserver optimized for speed and a small memory footprint, used by projects/sites such as Wikipedia and Youtube. I decided that the best course of action would be to allocate another IP to MM’s server (he original had just 67.106.77.7 and now he has 67.106.77.200 also), and have lighttpd (pronounced/shortened to “lighty” ) listen on there. That IP would be addressed by static.soldat.pl.

By using a separate IP, I allow for a few things. The first of which is I can more easily move the static content to another server in the same rack if I need to, just by bringing down the eth2:0 interface on his server and assigning the IP to another one. If I had just run lighty on another port, this would be much more difficult to do, and I would need to update DNS in order to move static.soldat.pl. The other thing is that I can more easily gather statistics for static.soldat.pl if it is on a separate interface. I’m sure there are other reasons, but moreso there are negatives associated with using port 81 on the same IP. Also, if I just use port 80, it is easier to make transparent changes through DNS, instead of having to go through and manually update references in code/sites/the Soldat client (for something like an auto-update system) to use port 81 instead of 80. Not what I want to do.