Join 3,551 readers in helping fund MetaFilter (Hide)


[Web Hosting] managed VPS vs Linode
January 14, 2013 2:58 PM   Subscribe

Hi, I have a medium-big sized website running on Wordpress. I was on the VPS-2 plan of Knownhost. Recently my traffic went up (10-15k visits a day) and started to get many server load too high messages. I upgraded to their VPS-4 (same link) but still the server can't cope.

I hired a known, respected wordpress/server developer to help me fix the issues with the cache plugin that seemed to be the cause.

Now it's working, but I still occasionally receive the alerts.

The developer said that with 80$/month vs my current 60 I could get similarly powered node at Linode with the advantage that for a fee (500$) he would set the server and the website up for me from ground up, only using state-of-the-art techniques he would optimize it exactly for my needs.

I trust the guy and that he would do a good job. What scares me is that I would then need to rely just on him for all my needs/problems. His fee is not cheap and although he's always very prompt in helping, there might be times when he will be not available.

What would you do, considering I wouldn't be able to fix anything myself ?
posted by madeinitaly to Computers & Internet (23 answers total) 5 users marked this as a favorite
 
Linode has a very good reputation. But I'm not clear why him setting up things a new way would necessarily render you unable to manage things that you are currently able to manage. Can you clarify that point?
posted by Dansaman at 3:14 PM on January 14, 2013


Why does the expert setting it up exclude you from maintaining it going forward, with support from him as needed, or a small retainer for a few hours a month of help as you need it?
posted by COD at 3:14 PM on January 14, 2013


hmm... Sounds to me like you need some caching.

Blogs, in general tend to be fairly easy to scale because the content changes rarely.

I would hire the developer to put a real caching layer in front of wordpress.

Something like varnish infront of your server, or do some sort of nginx proxy cache in front of apache.

Or, go whole hog and run nginx alone with the fastcgi cache(self link to my own blog.)

If you want more help, feel free to mefi-mail me. A $40/month server on linode should be more than able to handle 100k visits a day with proper caching.
posted by Freen at 3:15 PM on January 14, 2013 [1 favorite]


If you're just running Wordpress, you might consider a dedicated Wordpress solution. Two examples I've seen:
Wordpress Engine and Page.ly.

Since it sounds like you're not super technical, and will be relying on someone, either your dev or a managed hosting team, it is worth looking at long term costs of either choice. What would the service agreement with your dev look like? If something goes fubar at 3 AM on a Sunday, what does it cost to get things right again?
posted by heliostatic at 3:15 PM on January 14, 2013


FYI, a caching plugin for wordpress alone isn't going to help nearly as much as Varnish if it has been setup correctly. (heliostatic is right, just get someone to host it for you.)
posted by Freen at 3:17 PM on January 14, 2013


A hosting budget without maintenance costs (whether in time or money) isn't a hosting budget, and technical specifics aren't necessarily helpful here, given that we don't know the specifics of the WP setup. I presume that the dev wants to do some kind of frontend caching; I also presume that that's beyond the OP's capabilities.

Can you afford to put your developer on a flexible retainer -- x hours per month, scheduled at your discretion, perhaps with some carry-over if everything's running smoothly? (By which I mean, you pay the X amount for the month, but the time is credited to future months.) That gives you the capability to negotiate a lower rate than his standard one, since it's guaranteed income, with the understanding that he'll perform upgrades and security patches in a timely fashion, and respond to emergencies if necessary.
posted by holgate at 3:23 PM on January 14, 2013


I've got a wordpress site which peaks at around 10k visits per day running on one of the $20/month linode systems, and it handles it just fine with varnish and nginx. (Thanks for that link, Freen, I'll have to check that out!)

I'm guessing that the reason for not being able to manage the linode is that the OP isn't a sysadmin, and would require the services of one for maintenance. Looks like that's provided with the Knownhost plans. On preview, what holgate just said. I have deals with a few clients like this, where I'm on retainer for periodic maintenance and emergency support. If this site is a significant source of income for you, I do recommend having a sysadmin you can call for hourly help, if nothing else. As you've found out, management-included hosting plans aren't so great once you start needing individual help.
posted by hades at 3:33 PM on January 14, 2013


Thank you all for the answers so far!

It seems that agreeing on a SLA would be a way to reduce risks. I like the idea of a retainer but I am afraid his fee would make it expensive.

In your experience, if you charged 500 dollars for setting up and moving the servers, what would be your hourly rate for a long-standing agreement?

I cannot go to a dedicated WordPress hosting solutions because I have a rather complicated and crypted (with ion cube by the developer of the script) that woouldnt be part of the WordPress installation.

Now that I think about it, I might ask the developer of the script if it is possible to let that run on a smallish dedicated vps (script + some FTP jobs) and only send the results to WordPress on the other server. The script interfaces wp through a plugin that points to a sub domain. I guess the sub domain can reside on a different server?
posted by madeinitaly at 3:41 PM on January 14, 2013


An alternative might be to pay the dev a little more up front in exchange for a full writeup of all of the server-side components, which might not be enough for the OP to do the backend maintenance, but would be sufficient for someone with more general sysadmin/backend skills to fix problems when they arise.
posted by holgate at 3:42 PM on January 14, 2013


It's never a good idea to rely entirely on one person, no matter how competent or responsive they are, or how good your SLA is. Individual people sleep, have jury duty, get detained at customs, get new jobs, burn out, die, and encounter all sorts of other problems that keep them from being able to help you when you need them to, or worse, cause them to disappear completely.

If you do decide to let him optimize your installation, make sure you retain the hosting contact information, you're listed as the site owner, and you have the relevant passwords. You may need to calm his nerves by explaining that it's purely for the sake of emergency, in case he gets mauled by a bear the night your site gets featured on CNN or something. It's totally understandable for experienced developers to be afraid to give power to their clients, because clients have a tendency to mess things up if they have that access.
posted by smoq at 3:45 PM on January 14, 2013 [1 favorite]


I trust the guy and that he would do a good job. What scares me is that I would then need to rely just on him for all my needs/problems. His fee is not cheap and although he's always very prompt in helping, there might be times when he will be not available.

No you don't. Get him to document the setup and any competent sysadmin can admin your sys.
posted by DarlingBri at 4:02 PM on January 14, 2013 [1 favorite]


I agree with all of the above (solid documentation is not an option; relying solely on one person [and I say this as a sole freelancer]; Varnish will get you further; etc.) but I would like to ask do you plan on learning to manage this system on your own? Security updates, monitoring, etc? If not, you will need someone spending at minimum a few minutes a month to check in on things, install updates when they become available, etc.

As to Linode, they're fantastic, I've got 3 instances with them myself. I wouldn't hesitate to use them but I'm OK with a linux box. That's really the only concern here.
posted by Brian Puccio at 5:27 PM on January 14, 2013


Another option is to go the fully-hosted route and get an account on Page.ly. It looks like you're somewhere between their mid- and pro-grade tiers (listed here).

Unless this person is a full-time IT/ops guy or has a lot of experience scaling WP, I'd be very skeptical of getting tied to his support for your system. Once he gets busy or moves (or if the site he sets up can't handle the load), you're going to be SOL.

My day job involves development for a web service that handles 10 billion requests a week and I have a decent amount of experience with wordpress in the plugin development department. With those two pieces of information, I'm generally pretty skeptical of freelancers claiming that they can scale major applications. WordPress has a LOT of moving parts and it's not always obvious where the bottlenecks are. Which isn't to say that this person can't ... but I think the burden of proof should be on them to demonstrate they can do it. The contract should include a money-back guarantee if they can't get the kinks ironed out in 30 days (or something similar).
posted by toomuchpete at 6:55 PM on January 14, 2013 [1 favorite]


I'm doing more, on less powerful hardware. Some of my experience might be helpful.

The first thing I'd do is check the memory situation. If Apache's taking up all of it, lower MaxClients. Ubuntu's default is 150, which could take up to 3 gig of memory - it varies widely. Tuning MaxClients is a common task and it's a bit of an art.

Are you using WP-Super-Cache for caching? Lowering the time between garbage collections, to 10 minutes, helped me avoid frustrating hourly stalls.

I put on nginx on as a reverse proxy. It deals with concurrent connections, compression, and keep-alive better than Apache. I recommend it, but this isn't totally standard.

Lastly, I haven't done these yet: If the processor's overwhelmed, Memcache might help with complex queries, and a PHP accelerator might also help more generally.
posted by Pronoiac at 11:07 PM on January 14, 2013 [1 favorite]


As a note: memcached is the process that originally set the cpu alerts. We got the website up and running only by disabling it.

That's when the developer told me to move to something else.
posted by madeinitaly at 11:59 PM on January 14, 2013


Ok - developer/sysadmin contacted and he said their (it's actually more than him, it's a small company!) retainer starts at 150$/mo. And that for an extra fee he can document his installation etc.

The problem now for me is that I will go from 25$/month to 60$ then to 80+150... 230$/mo is A LOT more than I am spending now and I can't believe it's going to be this expensive.
posted by madeinitaly at 12:11 AM on January 15, 2013


Hardware isn't really the issue at this point. As others have said, you need to get your web server, database server and caches properly optimized. This isn't easy: unless your guy is good administrator (not just a good programmer), moving to Linode isn't going to give you an order of magnitude performance improvement.

May I suggest WPEngine? They run high performance managed web hosting for WP, and just WP. I do this stuff for a living and the performance difference between my WPEngine sites and my non-WPEngine sites is night and day.
posted by tsmo at 6:11 AM on January 15, 2013


(I see you'd have to use WPEngine's $250/month plan to handle a sustained 10-15k hits/day, which would be more than the $230/mo you're currently balking at. I still think it's worth considering. I'm obviously a huge fan of WPEngine though.)
posted by tsmo at 6:16 AM on January 15, 2013


Can you tell what processes are using the most CPU and memory? And just to check: it's not hitting swap at all, is it?


madeinitaly: I cannot go to a dedicated WordPress hosting solutions because I have a rather complicated and crypted (with ion cube by the developer of the script) that woouldnt be part of the WordPress installation.

I missed this earlier. What encrypted script are you running? How frequently is it running?
posted by Pronoiac at 3:50 PM on January 15, 2013


I cannot go to a dedicated WordPress hosting solutions because I have a rather complicated and crypted (with ion cube by the developer of the script) that woouldnt be part of the WordPress installation.

Maybe think about this a different way: this plugin could be the thing that causes you to stuff hundreds upon hundreds of dollars (possibly monthly) into a setup which might work no better than what you currently have. How much is it worth to you? (and I'd definitely suggest looking into other options for it. You might also talk directly to that developer about getting it working on WPEngine or Pagely)

People who are really good at performance tuning and scaling web services have a LOT of good employment options -- I'd be pretty shocked if this particular small business had even one of them. This is why managed services have such a huge advantage. Economies of scale allow them to hire highly skilled and qualified engineers, and you only see a small fraction of that cost.
posted by toomuchpete at 9:19 PM on January 15, 2013


To the ones that are left in the thread. I trust the developer/sysadmin because he is an authority in the server/wp world (ie he does work for very large sites like smashing magazine) and author of the best caching plugin available.

The script I have is a price comparison script, which basically is run for almost every single page and it's my main source of income - i really can't live without it.
posted by madeinitaly at 11:49 PM on January 15, 2013


If it's your main source of income, then you pay what it takes to make it work, up to the point that it's no longer worth it. Going from $25/month to $250/month seems like a huge leap, percentage-wise, but consider that if you had a regular job it would almost certainly cost you more than $25/month in transportation alone just to keep that job.
posted by hades at 4:35 PM on January 16, 2013 [1 favorite]


If this script has to run on many or most pageloads, then maybe load it with AJAX or something.

I thought about this, and if I were in your place, I'd be setting up a hefty server for a couple of days (Amazon S3? Linode?) to see how it fares under the load, or somehow splitting the work into pieces, across servers.

I think I'm a bit too removed to provide much more help.
posted by Pronoiac at 2:47 PM on January 17, 2013


« Older Hi all, I am developing onl...   |  I feel like I have become comp... Newer »
This thread is closed to new comments.