WordPress VM on $0.99 per month

I’ve been a big fan of Digital Ocean and their $5 Droplets (aka Virtual Machines). They are 100% SSD backed and speedy, and for $5 a month, you can afford to experiment. But when I borked my Droplet by screwing up a kernel update, I started thinking…. can I do this any cheaper than $5 per month?

This is when I discovered atlantic.net and their “GO” VPS package for $0.99 per month. $0.99! I had to try this out. Admittedly, the 10 GB of disk space and 256 MB of RAM is pretty tight, but I am strangely drawn to challenges of efficiency and really enjoy doing a lot with a little. So right now, this WordPress multisite install is running on a $0.99 per month server.

So far it has been very stable, but I have had to make some adjustments to keep from overrunning the limits of this box. First thing I reigned in was MySQL. Since this blog has very few posts, I could decrease the buffers to a very low value and still get good performance for my dataset. This would be much more challenging with more content and a larger database. Here’s what I have set in my.cnf – many of these variable could probably even go lower:

I then checked /etc/memcached.conf (since I switched from CentOS to Ubuntu) and made sure Memcached was set to only use 64 MB of RAM (-m 64). In the future, I plan to run some tests to see how much RAM WordPress actually uses in Memcached from a clean install (my suspicion is it isn’t much).

Besides that, the tweaks are minor. The memory_limit in php.ini is 128M and pm.max_children = 8 for php-fpm. I have swap enabled on this VPS to allow the disk to be used for overflow.

With hardly anything installed, I’m already using 2.5 GB of the 10 GB disk. Thankfully I don’t upload much on here, so this should last me for a while.

The low RAM limits what you can realistically run, but it fits my needs nicely and I’ve so far been happy with it. Now don’t expect the modern design or fancy tools like you get from Digital Ocean, but if you don’t expect too much from Atlantic.net, you might not be let down.

Update: It was pointed out to me that the feature set in the Atlantic.net dashboard and the Digital Ocean dashboard are very similar and, after checking out the Atlantic.net dashboard, I can say that it does have a pretty similar list of features. The main tools I use (snapshots, console access, and password resets) are all there.

For the database, I’m using MariaDB 10.1.1. I don’t think the memory usage is significantly different than what MySQL would be – you just have to turn the buffers and caching down way low and just rely on the performance you can get with everything running from the disk.

For PHP-FPM, I have the workers limited to a very small amount to run concurrently:

I’m using memcached for page and object caching in WordPress and have it set to use on 64 MB maximum. I also have opcache.memory_consumption=64 in php.ini, decreased from the default of 128 MB.

One of the reasons this all works is that my site has 2 blog posts, a simple theme, and very few plugins. This is a multisite with another site on it with about a dozen posts and a few more plugins, but all of it gets maybe 15 visitors a day on a good day. If I were asking more from this server by having a complex site with lots of content and quite a few visitors, I’d probably run into my limits very quickly. That being said, any site that is mainly serving static content to readers should be able to effectively cache those pages and run all of the PHP on very minimal hardware such as this.