
A VPS is the cheapest point where you get root access and predictable resources. It’s also where most people either overspend by 3x or under-spec and spend the next six months fighting the OOM killer.
The spec sheet won’t tell you which you’re doing. The reasoning below will.
Start from what your stack eats, not from traffic
Traffic is the wrong first input. Two sites with identical visitor counts can need wildly different memory, because memory is driven by what’s running — PHP workers, a database, a cache daemon, and the OS — not by who’s visiting.
A rough baseline on a modern Linux distro:
| Component | Typical resident memory | Notes |
|---|---|---|
| OS + systemd + sshd | 250–450 MB | Higher on panel images (cPanel, Plesk) — often 800 MB+ |
| MariaDB or MySQL | 350 MB–1.2 GB | Grows with buffer pool and connection count, not just data size |
| PHP-FPM | 60–120 MB per worker | Workers are the multiplier most people miss |
| Redis (object cache) | 30–80 MB | Cheap, and often removes the need for a bigger box |
| Nginx or Apache | 20–150 MB | Apache with prefork uses substantially more |
Do the arithmetic on your own stack. A small WordPress site with 6 PHP-FPM workers at 80 MB, a 400 MB database, Redis on defaults, and a 300 MB OS sits around 1.2 GB before the kernel uses any disk cache.
How much RAM for how much traffic
Planning ranges, not guarantees. Caching moves these numbers more than anything else here.
| Monthly visits (cached) | Practical RAM | What it buys |
|---|---|---|
| Under 10k | 1 GB | One small site, no object cache, tight PHP-FPM limits |
| 10k–50k | 2 GB | Comfortable single site, object cache, room for backups |
| 50k–200k | 4 GB | Multiple sites or heavy plugins, staging copy |
| 200k+ | 8 GB, or move to managed hosting | Your time costs more than the server at this point |
Behind a page cache and a CDN, PHP only runs on cache misses. A 100k-visit month at a 95% hit rate is roughly 5,000 dynamic renders — nothing. Without a page cache it’s 100,000 renders, and your worker pool is the bottleneck.
vCPU counts are marketing until proven
“4 vCPU” for $6 and “2 vCPU” for $24 aren’t comparable. Hosts differ on whether those cores are dedicated or shared, how much steal time you get under load, and which CPU generation you land on. A shared-core count is a ceiling, not a promise.
Two things worth checking before you commit:
- Steal time. Run
topand watch thestcolumn under real load. Persistent steal means a contended host, whatever the plan says. - Dated benchmarks. A performance number without a date and region is decoration. Hosts swap hardware.
Storage decides your database speed
For a database, IOPS matter more than gigabytes. NVMe versus network-attached SSD is a real difference in write latency, and you feel it on admin pages, imports, and backups long before you feel raw disk size.
One rule that survives contact with reality: keep disk usage under 70%. Filesystems slow as they fill, and a full disk turns routine log rotation into an outage.
What the pricing page doesn’t emphasize
| Detail | Why it matters later |
|---|---|
| Backup policy and retention | ‘We back up daily’ without a retention window or restore path isn’t a plan. Ask how to restore, then try it. |
| Transfer limit vs bandwidth | Small sites never approach either, but the overage price is what bites when one does. |
| Snapshot cost | Some bill snapshots per GB-month. It compounds quietly. |
| Support scope | Support that ends at ‘the server is up’ won’t debug a plugin conflict at 2am. |
| Migration out | Check you can export a disk image. Exit cost is real leverage. |
| Region options | Latency to your users is a design decision, not an afterthought. |
Where to actually buy
For a first VPS running one site, the practical shortlist is DigitalOcean, Vultr, Linode (now Akamai), Hetzner, and Contabo at the budget end. They differ mainly in price per gigabyte of RAM, region coverage, and how much you like the control panel. Take the smallest plan that fits your stack, run it a month, and watch memory and steal time before sizing up. Moving up a tier costs a reboot; overpaying for a year costs money every month.
REPLACE_ME — DigitalOcean referral link · REPLACE_ME — Vultr link · REPLACE_ME — Hetzner link
Questions people ask
Is 1 GB RAM enough for a WordPress VPS?
It runs, with no headroom. Add an object cache, a backup job, and a spike and you’ll meet the OOM killer. 2 GB is the realistic floor for a site you care about.
Do I need a control panel?
Only if you want one. Panels cost 300–600 MB of RAM and add attack surface in exchange for convenience. On a single-site box, a firewall, unattended-upgrades, and a deploy script usually do the job.
Should I pick the cheapest provider?
Cheapest wins when the workload is disposable. When downtime costs money, pay for the provider whose support and snapshot story you’ve actually verified.
Sources
- https://www.digitalocean.com/community/tutorials/understanding-the-linux-oom-killer
- https://www.hetzner.com/cloud/
- https://www.php.net/manual/en/install.fpm.configuration.php
Some links on this page are affiliate links. If you buy through them, TechPicks may earn a commission at no extra cost to you. It does not affect what we recommend. Full disclosure.