A recent r/selfhosted thread described migrating a client off cheap shared hosting onto a modest VPS. The poster called the performance gain embarrassing. That word comes up a lot in these stories. Embarrassing for whom, though? Usually for whoever has been collecting a monthly bill while the site wheezed along under a noisy-neighbor tenancy.
The uncomfortable truth for a lot of agencies and hosting resellers is that shared hosting is a margin product. A $7 reseller slice resold as a $45 hosting line item prints money. A right-sized $25 managed VPS resold at $150 with actual work attached looks worse on a spreadsheet even when it is objectively better for the client. So nobody suggests the move. The site keeps limping. The client keeps paying.
The Signals You Have Already Outgrown Shared
You do not need a load test to know. Four signals show up over and over on sites that should have moved six months ago.
- TTFB over 800ms on a warm cache. A cached homepage should come off the wire in 100 to 300ms. If you are sitting north of 800ms after every optimization the cache plugin vendor sold you, you are not waiting on your code. You are waiting in line behind other tenants.
- Concurrent connection caps you can feel. Shared plans silently throttle simultaneous PHP workers, often at 10 to 20. Run a small email blast, watch the site fall over. If a newsletter send breaks checkout, that is infrastructure, not marketing.
- Cron jobs that lie. Most shared hosts throttle wp-cron, system cron, or both. Your "hourly" sync runs every 4 hours. Your nightly backup silently skips. You only find out when the restore fails.
- A database you do not actually own. Shared MySQL means shared buffer pool, shared query cache, shared slow-query neighbors. One bad plugin on someone else's site can tank your query performance, and you will never see the other tenant to blame.
The Honest Cost Comparison
Set the retail $30 to $80/month shared plan against a $25 to $60/month VPS at a serious provider (Hetzner, Vultr, DigitalOcean, Linode) with a managed engagement layered on top. On paper the VPS looks more expensive once you add the management fee. On outcomes it is not even close.
You get isolated CPU and RAM you paid for. You get a database tuned to the site's actual working set. You get cron that fires when it says it will. You get logs you can read and a kernel you can patch. The management fee buys someone who knows what iostat and pt-query-digest are, which is the actual product. Nobody is selling you a control panel this time.
The real cost of staying on shared hosting is the traffic the site cannot convert because it is slow, the leads that never reach the CRM because cron skipped, and the agency hours burned every quarter trying to optimize a site that is capacity-constrained at the tenant level.
What a Right-Sized Managed VPS Engagement Looks Like
Not a reseller panel with your logo glued on. A real engagement looks boring on purpose: a sized VPS, a hardened base image, automated backups you have actually test-restored, monitoring with meaningful alerts (not email spam), a documented update cadence, and a person who answers when MySQL starts OOM-killing itself at 3am.
For most SMB WordPress, Magento, or bespoke PHP/Node stacks, the right starting size is 2 to 4 vCPU, 4 to 8GB RAM, NVMe storage, with a dedicated MariaDB or Postgres tuned to the workload. Add a CDN in front, a staging environment that mirrors production, and off-box backups. That is the whole product.
The Takeaway
If you are an agency or an SMB owner and two or more of the four signals above sound familiar, shared hosting is already costing you more than a managed VPS would. The math stops working somewhere between 10k and 50k monthly visits or the moment you add anything transactional.
One thing not to do: do not try to self-manage a production VPS without a plan. Spinning up a $6 droplet and running apt upgrade once a quarter is not a hosting strategy, it is a breach waiting to happen. Either engage someone who does this for a living or stay on shared hosting and budget for the performance ceiling honestly. The bad outcome is the in-between: a VPS with no patching discipline, no backups you have tested, and no monitoring. That is strictly worse than shared.