Testing the Digital Ocean $5 Cloud Servers with an MMORPG
|I've been working on an space-based MMORPG for a while now and I finally reached a point where the server was largely complete and ready for some load testing. I had done quite a bit of testing on my quad-core Xeon development system with great results. Renting a dedicated box like that one, and with a decent Internet connection would not be cheap, however. |
I was curious about Digital Ocean's offerings so I decided to take a couple of their smallest virtual machines for a test run. These 5 dollar/month cloud servers have 512MB of memory, a single virtual CPU, and 20 gigabytes of SSD disk storage. I created the first one, Maelstrom, in one of their New York data centers and the second one, Paradise, in their San Fransico facility. As claimed, each server took just under 60 seconds to deploy.
I made a few customizations to the bare-bones CentOS 6.5 64-bit image that I had selected for both machines. I then ran my personal benchmark package on both. On my 256 megabyte benchmark that emulates a relational database instance, I got about 25% of the performance of one of my Ivy Bridge Xeon cores. This benchmark stresses memory bandwidth, takes advantage of the full range of caches, as well as loading the CPU with integer-only operations.
I consider a fourth of an Ivy Bridge core an excellent result for a $5(US) server! I repeated the tests over the following days and got consistent results varying within a 10 percent range. One thing of note; the SF server consistently performed about 10% faster than the NY server.
Next, I loaded up a million-sector instance of my MMORPG server engine on the NY server and a bundle of testing scripts on the SF machine. The test suite, which emulates 712 concurrent players requires 1424 processes to do that. In retrospect, it wasn't too surprising that I crashed the SF machine as the testing scripts created an urgent demand for far more than 512 MB of memory! My mistake. I suspected that I wasn't going to be able to fully stress the game engine with far fewer emulated players.
But, always the optimist, I set up a gigabyte of swap space on Paradise and tried again. This time the tests ran just fine -- and the SSD-based swap space performed beautifully.
I got an average of 2500 game transactions per second over the duration of the test -- which should be more than enough for my target of 1000 concurrent players per realm. The SF machine used one half of the GB(!) of swap space while running the test scripts and hummed along happily at about 75% busy.
The NY server was fully stressed at about 98% CPU utilization and remained very responsive for the duration of the test.
I'm still running both systems three weeks later and have experienced no reboots or outages so far.
The New York server continues to run my text-based space MMORPG server back-end for game-play testing as the graphical front-end client is developed.
|mail this link | score:9978 | -Ray, May 13, 2014|
More Sysadmin articles...||
Buy Fine Art on Canvas Online
Setup a chroot environment on Ubuntu with debootstrap
Tutorial: Install Lighttpd, PHP5, PHP-FPM, MySQL on Fedora 19
Tutorial: Install Nginx, PHP5, PHP-FPM, MySQL on Fedora 19
Tutorial: Installing Lighttpd, PHP5, PHP-FPM, MySQL on Debian 7
Tutorial: Install Apache2, PHP5, MySQL on OpenSUSE 12.3
tmux: terminal multiplexer
Virtual Hosting with PureFTPd and MySQL on Fedora 18
Tutorial: Automatically add a disclaimer to emails with alterMIME (Postfix on Debian 6)
GlusterFS Tutorial: 4-node Distributed Replicated Storage on CentOS 6.3
Tutorial: Recover from failed apt-get with btrfs, apt-btrfs-snapshot on Ubuntu 12.10
Tutorial: Set up Apache2, mod_fcgid, PHP5 on OpenSUSE 12.2
Tutorial: Install Apache2, PHP5, MySQL on OpenSUSE 12.2
Install mod_geoip for Apache2 on CentOS 6.3