Hero Image

How Much RAM Does a WordPress VPS Actually Need?

How Much RAM Does a WordPress VPS Actually Need?

Look up how much RAM a WordPress VPS needs and two figures appear again and again: 4GB, or 8GB to be safe. Both are sensible starting points, but neither tells you whether it's enough for your website.

RAM requirements don't come from WordPress itself. WordPress is just PHP code sitting on disk until something asks the server to run it. What actually consumes memory is everything working underneath and around it: PHP processing each request, the database answering queries, the web server handling connections, your control panel, and whatever caching is (or isn't) in place. A single low-traffic brochure site and a busy WooCommerce store can sit on servers with wildly different memory needs, even though both are "just WordPress."

Key takeaways

  • RAM requirements follow concurrent, uncached workload, not WordPress installations or site count alone.
  • Cacheable brochure sites, busy content sites and WooCommerce stores have very different memory profiles.
  • Low memory may cause swapping, queued requests or killed processes, so diagnose actual usage before upgrading.

The short version: 4GB is a sensible starting point for one small, well-cached brochure site. Around 8GB gives busier content sites, multiple installations, or a WooCommerce store more headroom. These figures are only starting points. The right amount depends on how much concurrent, uncached work the server handles and how memory-intensive that work is, not on WordPress itself.

What actually uses RAM on a WordPress server

PHP is usually the largest variable memory cost. Every time WordPress builds a page that isn't already cached, PHP loads WordPress core, your theme, and every active plugin, then executes that code to generate the page. Active plugins add to that per-request workload, but plugin count is only a rough proxy: memory use depends heavily on what each plugin initialises and which code paths actually run, not just how many are switched on.

On most modern WordPress hosting, PHP runs through PHP-FPM, which keeps a pool of worker processes on standby. Each worker holds its own chunk of memory, and the more workers running at once to handle simultaneous requests, the more RAM PHP consumes overall.

MySQL or MariaDB stores your posts, pages, users, options, orders and stock. Its InnoDB buffer pool keeps frequently accessed data in RAM so repeat queries can avoid the disk. Set it too high and PHP is starved of memory; set it too low and database performance suffers.

The web server (commonly Nginx, Apache, or LiteSpeed) handles incoming connections and passes requests through to PHP. Its own memory footprint is usually modest compared to PHP and MySQL, but it still adds up, especially under high concurrent traffic.

Your control panel, such as Plesk, runs its own background services for managing the server, backups, mail and security. This overhead is fairly constant regardless of how busy your website is, but it's memory the rest of the stack doesn't get to use.

Caching operates at several layers, and each affects memory demand differently.

  • OPcache caches PHP's compiled bytecode in memory, using a modest, predictable amount of RAM for a performance gain that's close to essential on any WordPress server.
  • Object caching (typically Redis or Memcached) stores expensive database lookups in memory so WordPress can skip repeat queries; it uses RAM in proportion to the site's size and activity, but takes real pressure off MySQL/MariaDB in return.
  • Full-page caching (a static cache, or something like LiteSpeed's built-in cache) stores an entire finished page and serves it back without waking up PHP or the database at all, making it the layer with the biggest impact on memory.

Together, these layers can keep a large share of cacheable public traffic away from PHP and the database entirely. The resulting reduction in PHP and database work often affects RAM demand more than the difference between a "small" and "large" VPS plan.

Why the number of WordPress sites doesn't tell you much

It's tempting to think in terms of "how many sites can I fit on this server," as if each site takes a fixed slice of memory.

A server hosting fifteen small, low-traffic brochure sites can use less RAM than a server hosting a single busy WooCommerce store. What matters isn't how many WordPress installs exist on the disk, it's how much of that PHP and database activity is happening at any given moment.

If you're sizing a server, "how many sites" is the wrong question. "How much concurrent, uncached activity will this server need to handle" is the right one.

Small brochure site vs busy WordPress site vs WooCommerce

A small brochure site is the easiest case. Mostly static content, low traffic, few or no logged-in visitors, and pages that cache well. Most requests come straight from cache without ever waking up PHP or the database, so memory demand stays low and predictable.

A busy content site (news, membership content, a site with a lot of regular visitors) sees more of its traffic logged in, or hitting pages that can't be cached (search results, personalised content, comment forms). Those requests bypass the cache and land on PHP and MySQL directly, which pushes memory demand up.

WooCommerce pushes memory demand higher. Carts, checkouts, account pages and order processing are inherently dynamic; none of it can be served from a static cache the way a blog post can, so every logged-in shopper generates PHP and database work.

What drives demand: traffic and uncacheable activity

  • Concurrent traffic. It's not total monthly visitors that matters, but how many requests the server needs to handle at the same moment. A site with 50,000 visits a month spread evenly uses far less peak memory than one with the same total arriving in a short burst.
  • Logged-in users and uncacheable requests. WordPress typically doesn't serve cached pages to logged-in visitors, and dynamic requests like search results, forms, AJAX calls and checkout flows bypass the cache by nature too. A membership site or WooCommerce store with a lot of concurrent logged-in activity will generate far more uncached PHP work than its visitor count alone suggests.

What happens when a server runs low on RAM

A server that's short on memory doesn't usually fail all at once; it tends to degrade in stages, though a sharp spike can skip ahead.

If swap is available, the operating system may start moving inactive memory pages to disk, often the first sign something's wrong: pages that loaded in under a second start taking several. With little or no swap configured, PHP-FPM may begin queuing requests as soon as its workers are occupied, leaving visitors with timeouts instead of completed pages.

In extreme cases, the Linux kernel's OOM killer steps in, selecting a process to terminate based on an OOM score shaped by memory use and configured adjustments. It can take out a MySQL process mid-query or a PHP worker mid-request; the result is usually an error or a burst of 5xx responses rather than data corruption, since InnoDB recovers cleanly from a hard kill, but the outage is real. Memory pressure often develops gradually, but a traffic spike or runaway process can trigger an abrupt OOM event without the earlier warning signs.

Is it low RAM, or something using too much?

Before adding RAM, check whether a plugin, process or configuration problem is consuming too much memory. The symptoms can look similar, but the fixes are different.

Signs worth checking:

  • Free and available memory. Tools like free -m show how much RAM the server has spare, versus how much is tied up in cache it can reclaim if needed. Persistently low "available" memory, rather than just low "free" memory, is the figure that matters.
  • Swap activity. Occupied swap on its own isn't conclusive: pages can stay swapped out long after the pressure that put them there has passed. Regular, sustained swap-in/swap-out activity (rather than an occasional brief spike) is the stronger sign the server doesn't have enough RAM for its current workload.
  • PHP-FPM worker counts. If PHP-FPM regularly hits its configured limit on max children, requests start queuing. That confirms the concurrency limit has been reached, not why: it can mean the server needs more RAM to raise that limit safely, but it can just as easily mean slow PHP execution, database latency, a slow external API call, CPU saturation, or a max children setting that was simply set too low.
  • A single runaway process. Sometimes the issue isn't overall capacity but one plugin, cron job, or badly written query consuming far more memory than it should. Checking per-process memory usage can reveal a specific culprit rather than a genuine capacity shortfall.
  • Database memory configuration. A buffer pool sized too small for the database will cause more disk activity and slower queries; sized too large for the available RAM, it starves everything else running on the server.

Check the problem at both server and WordPress level:

  • Our built-in server-level diagnostics, included on Agency VPS plans, profile resource usage over time to show exactly which processes and services are consuming CPU and memory, useful for spotting a single runaway process.
  • Query Monitor, a free WordPress plugin, works at the site level instead, showing slow database queries, PHP errors and hook performance from inside WordPress itself, a good first step when one specific site looks like the problem rather than the server as a whole.

You don't have to work this out alone

Choose a managed VPS by looking at what the site does under load, how much traffic bypasses the cache, and how much headroom the full server stack needs. If you're weighing up providers as well as specs, our guide on how to choose a managed VPS hosting provider covers what else is worth asking.

If you're not sure where your site fits, our team can look at what you're running and recommend a VPS that matches it, rather than the biggest or cheapest plan on offer. Get in touch and we'll talk you through it.


Frequently asked questions

Is more RAM always better for a WordPress site?

Not necessarily. Extra RAM only helps if the server is genuinely short on memory; if the real cause is a misconfigured plugin, an oversized query, or missing caching, more RAM just masks the symptom.

Does the number of plugins affect RAM usage?

Yes, but only active plugins count, since WordPress never loads code for ones that are switched off. A long list of light plugins can use as much memory as a couple of heavy ones.

Can caching really reduce how much RAM I need?

Yes, often by a wide margin. A request served by a full-page cache before WordPress can avoid PHP and database work entirely, substantially reducing peak memory pressure during busy periods.

Why does WooCommerce need more RAM than a WordPress blog with similar traffic?

Its checkout flow, cart, account pages and stock management are all dynamic, so none of it can be served from a static cache: each interaction still runs through PHP and the database individually, unlike a cached blog post.

How do I know if my server is genuinely running low on memory?

Look for sustained swap-in/swap-out activity rather than just occupied swap, low available (not just free) memory, and PHP-FPM regularly hitting its worker limit. A brief spike now and then is normal; a persistent pattern usually means the server needs either more RAM or a closer look at what's using it.

Other Related Posts:

How to Migrate to a Managed VPS With Minimal Downtime

How to Migrate to a Managed VPS With Minimal Downtime

If you're considering a move to a new hosting provider, there's usually a good reason behind it, and often a fair bit of hesitation alongside it. That's understandable. Your website or application matters to your business, and the idea of moving it somewhere new naturally raises questions. What if something breaks along the way? What if customers notice? What if it all takes longer than expected?

4th Sep 2026