#StandWithUkraine

SiteGround shared hosting in–depth

For a hosting company my start with SiteGround was less than typical, as I somehow intruded on their company and client dinner at WordCamp Europe 2013. I was thoroughly sick through the whole WordCamp, so I retain no memory how that (and other things) happened. I am behind the lamps on the photo. Probably.

Some time later I migrated my sites to them and got to say they have one of the most interesting shared hosting options at the moment.

Above average acquainted

Since I ended up knowing few people at SiteGround personally, and they are still talking to me (*waves*), I pretty much turned all the interesting details inside out. Now certified “above average acquainted with SiteGround hosting”.

Since that is not quite from–the–street experience, I will be explicitly making a distinction in the post between being a client and being a client who knows CEO, senior engineers, and whomever else.

The issue of $25 hosting

I had long been struggling with the gap between shared hosting options (maxing out at $10–15) and basic managed VPS (starting at around $50). It’s not even a matter of finding good hosting around $25, it is pretty much a matter of finding any hosting at all at that price point.

updated 2014–11–11 Corrected pricing and discounts information. Added renewals information.

SiteGround’s GoGeek shared plan (top of three) kind of qualified. They price it at $30, but run at constant 50% discount for $15 with 50% discount to 15$ applied to first order of new customers.

Renewals starting from second year are full $30 price. Minimum renewal period is 3 months and you can choose to renew for 1/2/3 years at 10%/20%/30% discounts respectively.

And so I paid (note that despite monthly price listed I was only given option to pay for a year in bulk), picked Chicago data center for my English–speaking North America–centric traffic (other two options are Amsterdam and Singapore) and was set.

Leaving LiquidWeb

But wait, didn’t I swear by LiquidWeb as supreme golden standard of web hosting? Actually I still do.

Unfortunately it was time to admit that things we know are good aren’t always good for our circumstances. Like I know ceramic kitchen knives are awesome, but steel ones get it done for me. I need to sharpen those.

So over 2013 (between jobs and with a lot of attention to personal projects) I had to admit two issues with LiquidWeb for me:

  1. $60 monthly was adding up to $720 annually (mathematics!), which was clearly biting into my finances — for sites that neither generated income or even used much of available VPS resources.
  2. I was mostly on my own with software stack, with support being amazingly awesome at putting back together things I exploded, but no one being there to just give me better toys (latest versions, cool software, and so on).

SiteGround was an option to cut costs and get someone else to mess with servers to get me those toys. And they delivered on both counts.

Tools we need

Shared hosts tend to be synonymous with slightly stale software and features. Some of them are better at keeping up. Very few are ahead of the curve.

SiteGround is so ahead of the curve it hurts. Other hosts I mean, me it brings joy.

PHP

Very good range of PHP versions is always available. There is a “PHP Version Manager” tool in cPanel, which can be used to select version per folder in site.

When I just joined PHP 5.5 wasn’t showing up on the list, but was actually available by tweaking respective line in .htaccess to:

AddHandler application/x-httpd-php55 .php .php5 .php4 .php3

Looking now PHP 5.5 shows up in the list properly. PHP 5.6 does not yet, last I heard they were testing it before putting it on server.

SSH

SSH (secure shell) access is available, which is still far from ubiquitous on shared. Can connect, run commands, do all the things.

I struggled a bit with setting up SSH keys (I am on Windows, common story), working through instructions, but in the end it clicked.

Setting up SSH in PhpStorm for file access, embedded terminal, and setting up specific remote commands is exceedingly convenient.

Git

Since it helps to have actually useful things to run, when you can run things, the GoGeek plan comes with Git version control.

I had two major kinks with it starting out:

  1. It mostly just refused to work because some pieces were prevented from running by security settings. Support sorted that out promptly.
  2. I couldn’t clone public repositories from https:// links, which I needed to for auto–deploy approach I use on some things. Sorted out later with nagging on personal connections. :)

From there it just worked and being used extensively. There is also some SG-GIT extra feature for staging functionality, which I have no idea about.

Composer

While Composer dependency manager isn’t available out of the box, it was painless enough to get running:

  1. Download getcomposer.org/composer.phar to your account’s home directory — /home/username.
  2. Edit .bashrc file in same directory by adding alias composer='/usr/local/php55/bin/php-cli ~/composer.phar' line.
  3. Restart SSH session or run source ~/.bashrc to reload config.
  4. Use composer command!

From there is just works and if you aren’t using it yet — you should. :)

Speed we need

Another interesting promise was of special toys. Those that are not just uncommon, but plain unheard of on shared hosting.

SiteGround groups these under SuperCacher feature, but marketing aside it offers (fantastically so) two very interesting software items — Varnish and Memcached.

Varnish

Varnish Cache is a reverse proxy. It is a software that sits in front of web server (like Apache) and caches your web pages to improve performance.

In a nutshell it does what in typical WordPress site is clumsily performed by full page caching plugins. Those I have a little love for. I have a lot of respect for developers crazy enough to maintain those for free at WordPress scale, but issues keep slipping through the cracks. For me full page cache has been endless source of issues to deal with, and I tried pretty much all major implementations over years.

There are two levels to Varnish cache at SiteGround:

  1. First level will cache static resources and will work for any site.
  2. Second level will cache dynamic resources (like WordPress pages!) and only works for specific platforms that have plugin to handle it and provide necessities like cache invalidation.

I had some minor issues making it recognize my sites because I put WordPress core into own subdirectory (as any serious site should) so it took some copying version.php file around.

Fully configured Varnish completely removes need to run full page caching plugin at WordPress install and is way better at it than they are.

My minor gripes that there isn’t access to Varnish configuration (even if only to peek) and that there is no intended way to set it up for PHP applications that don’t have plugin. Can fake WordPress with version file to cheat around it, but I hadn’t wandered there yet.

Memcached

Memcached is a data store implementation. It allows to cache data between requests to reuse it (and is more suited to it than database or writing to file system).

SiteGround provides individual Mmecached instance to account, limited to 64MB of memory. SuperCacher plugin for WordPress implements access to it as persistent Object Cache backend, which in WP is Very Good Thing.

Initially I had a lot of trouble with Memcached process constantly dying on me. WP plugin also uses slightly modified version of open source code and disables itself, so I kept discovering that it went of and wasn’t working for hours.

In the end (strings naggeed!.. I mean pulled!) it was traced to monitoring software mistaking my rarst login with RAR archiver process. Smooth since fixed.

I wrote a small snippet to keep an eye on it in WordPress dashboard while troubleshooting it:

add_filter(
      'dashboard_glance_items',
      function ( $array ) {

         global $wp_object_cache;

         if ( isset( $wp_object_cache->mc['default'] ) && is_a( $wp_object_cache->mc['default'], 'Memcache' ) ) {

            $stats = $wp_object_cache->mc['default']->getstats();

            if ( 0 < $stats['bytes'] ) {
               $array[] = human_time_diff( 0, $stats['uptime'] ) . ' memcached uptime';
               $array[] = round( $stats['bytes'] / 1024 / 1024, 2 ) . ' MB memcached storage';
            }
         }

         return $array;
      }
);

Resource allowance

One of the critical issues with shared hosting is how far they will actually let you to consume resources. GoGeek plan allows you to create unlimited sites with unlimited banwidth and puts forwards “suitable number of monthly visitors” (at 100K), which for techies isn’t actual technical thing*.*

So once you get to setting up account and your cPanel interface, there are two very specific limits displayed there.

CPU time usage

For my account current limits shown are:

  • 4 000 seconds (67 minutes) per hour. Yes, that’s more than there are in an hour, multiple CPU cores at work might get you there.
  • 40 000 seconds (11 hours) per day. So less than half of non–stop load for single CPU core.

Account executions

Now this one is rare (and very controversial if you google discussions around). SiteGround will basically count every program “run” and make it subject to similar limits — 4 000 runs per hour, 40 000 runs per day.

The thing is runs are very eager to tick. WordPress page would be (usually) one such run, but WP admin would already take at least two and tick another run with Heartbeat background script.

Malicious bots, doing malicious things like trying to brute force crack your password, can run up this stat like you have no idea.

Also killing processes

If you ever used shared hosting for any amount of time you quickly learned “bad neighbours” syndrome, when everything slows down to a crawl.

SiteGround has peculiar take on this (because of course they do :) — instead of waiting out for some process, which is being a performance issue, run out they just kill everything and restart. Long running processes get killed as well.

So on one hand this is good, because no one has a chance to really cripple performance. On other hand this changes up outages or slowdowns into kind micro–outages while everything on server scrambles to reboot.

My issues with those are that they show visitors something that isn’t your site and that you have no control over (like information screen about software issue in progress) and they are very hard to monitor for. I bumped my Pingdom polling resolution from 5 minutes to 1 minute and still not sure I am capturing those most of the time.

So overall killing is interesting solutions that likely comes ahead overall. I am still irked by it though. Slightly. :)

CPU/execution limits are just there, had no issue running over so far.

Support experience

I cannot say I am especially happy or unhappy with support so far. Support is last, very last, really last resort for me for something I just cannot do or figure out myself. So I am demanding client with tough issues, that first line support might not have a fix for.

However I am slightly dissappointed by SiteGround support’s inclination to let such issues just… hang.

For example when server IPs were being changed I opened a ticket about time frame, because I manage my DNS myself, separately from SiteGround (always do, never mix DNS and hosting).

I got a response that they cannot provide that information. AND!? Queue grumbling on Twitter and getting reply there that IPs would work in parallel for a while so I will have time to switch over.

I mean I am spoiled by LiquidWeb. Whom I was paying 4×. So not complaining, just being grumpy here. It balances out.

Overall

So, stir, shake and what’s the verdict?

SiteGround offers one of the most advanced feature options out there for shared hosting.

At a plain lucrative price point.

However sometimes when you are looking for a bleeding edge you get to bleed a bit. :)

After slightly rocky settling in, it now serves me very well and I am excited to keep using it and see what other features they will develop in the future. Which is far more optimistic expectations than I ever had of shared host (usual would be around just “please don’t die for a while”).

Disclosure

There are SiteGround affiliate links around at this site, which bring me in free hosting time for my account when people sign up via them. No moneys involved.

Now go check SiteGround.com out or said affiliate link. :)

Related Posts

4 Comments

  • Jenny Beaumont #

    Great post! I just switched over to SiteGround after meeting the team at WordCamp Zurich this year, and so far am really happy with them. Though, after reading this, I'm clearly not taking full advantage of all the cool toys :) Support *is* a huge issue for me, especially since the main low-cost hosting offer here in France has such terrible service (including having to PAY for service calls, no chat, and a sometimes week-long turn around on support tickets). The SiteGround chat is awesome and their reps have been consistently fast and knowledgable (I bug them fairly often :)).
  • Andrey “Rarst” Savchenko #

    Yeah, I am likely just “below the average client to support”. :D
  • Ryan Hellyer #

    I'm surprised with your geeky inclinations that you don't just run your own box. I'm currently setting up a US$10/month Linode account which will blitz your SiteGround account performance wise. The downside of course, is that I need to dick around maintaining my own box and have to fix all my own mistakes.
  • Andrey “Rarst” Savchenko #

    The downside of course, is that I need to dick around maintaining my own box and have to fix all my own mistakes.
    Well... I don't! :D