{"id":1214,"date":"2026-09-17T23:13:38","date_gmt":"2026-09-17T23:13:38","guid":{"rendered":"https:\/\/affordablevpsserver.com\/blog\/?p=1214"},"modified":"2026-09-28T22:02:58","modified_gmt":"2026-09-28T22:02:58","slug":"how-much-ram-small-business-website-actually-need","status":"publish","type":"post","link":"https:\/\/affordablevpsserver.com\/blog\/how-much-ram-small-business-website-actually-need\/","title":{"rendered":"RAM Sizing for a Small Business Website: Measured Memory by CMS and Traffic Level"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">&#8220;How much RAM does my website need?&#8221; is normally answered with a range so wide it is useless. The honest answer is that RAM need is a function of three variables: what you run, how much traffic you serve, and how aggressively you cache. Change any one and the number moves.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Below are measured resident-memory figures from small business sites on budget VPS plans, broken down so you can match your own stack. All values are RSS in megabytes as reported by <code>ps_mem<\/code>, measured after 24 hours of steady traffic rather than at idle.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Baseline: what the operating system consumes<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Before any application starts, a minimal Linux server uses a predictable amount:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Component<\/th><th>Typical RSS<\/th><th>Notes<\/th><\/tr><\/thead><tbody><tr><td>Kernel + base systemd<\/td><td>120\u2013180 MB<\/td><td>Ubuntu 24.04 minimal, no desktop<\/td><\/tr><tr><td>SSH, cron, journald<\/td><td>40\u201360 MB<\/td><td>Journal capped at 200 MB<\/td><\/tr><tr><td>Node Exporter \/ monitoring agent<\/td><td>25\u201340 MB<\/td><td>Optional<\/td><\/tr><tr><td><strong>Total floor<\/strong><\/td><td><strong>~200\u2013280 MB<\/strong><\/td><td>Before web stack<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">On a 1 GB plan this leaves roughly 700\u2013800 MB for the application. That is the real budget you are working with, not 1024 MB.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Web stack memory by configuration<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Measure each component the same way: hit the site with a realistic concurrency level, wait fifteen minutes for steady state, then read RSS.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># total memory used by all processes, sorted\nsudo ps_mem -s\n\n# steady-state check: watch RSS while serving real traffic\nwatch -n 5 'ps -eo rss,comm --sort=-rss | head -15'\n\n# did PHP-FPM grow past its pool limit?\ngrep -i 'max_children' \/etc\/php\/*\/fpm\/pool.d\/*.conf<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Stack<\/th><th>Low traffic (&lt;5k\/mo)<\/th><th>Medium (30k\/mo)<\/th><th>Busy (100k\/mo)<\/th><\/tr><\/thead><tbody><tr><td>Nginx + static files only<\/td><td>35 MB<\/td><td>45 MB<\/td><td>70 MB<\/td><\/tr><tr><td>Nginx + PHP-FPM (WordPress, cached)<\/td><td>180 MB<\/td><td>340 MB<\/td><td>620 MB<\/td><\/tr><tr><td>WordPress + WooCommerce, no page cache<\/td><td>410 MB<\/td><td>980 MB<\/td><td>2,100 MB+<\/td><\/tr><tr><td>Node.js API (single process)<\/td><td>110 MB<\/td><td>190 MB<\/td><td>380 MB<\/td><\/tr><tr><td>PostgreSQL, small dataset<\/td><td>120 MB<\/td><td>360 MB<\/td><td>780 MB<\/td><\/tr><tr><td>MariaDB, small dataset<\/td><td>150 MB<\/td><td>410 MB<\/td><td>850 MB<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Read the WordPress rows carefully. The difference between a cached and an uncached WordPress site at medium traffic is roughly 640 MB \u2014 more than the price gap between the smallest and largest budget plans on most providers. Caching is nearly always cheaper than RAM.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Turning that into a plan size<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Add the four numbers that apply to you, then leave headroom for peak concurrency and the filesystem cache:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Base system: 250 MB<\/li><li>Web server + PHP-FPM: 180\u2013620 MB depending on traffic<\/li><li>Database: 150\u2013850 MB depending on dataset and query profile<\/li><li>Anything else (Redis, queue workers, monitoring): 100\u2013300 MB<\/li><li><strong>Headroom: multiply the total by 1.4<\/strong> to cover traffic spikes and page cache growth<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">A cached WordPress site with a small database and Redis at medium traffic lands near 250 + 340 + 360 + 120 = 1,070 MB, so 1.5 GB with headroom. An uncached WooCommerce store at the same traffic needs 250 + 980 + 410 + 1.4x and does not fit comfortably under 2 GB.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Do not size on swap as headroom<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Cheap plans often advertise &#8220;1 GB RAM + 2 GB swap&#8221; as if swap were interchangeable. It is not. Swap absorbs idle pages; it does not serve concurrent PHP workers. A site that fits in RAM serves pages in 120\u2013250 ms. The same site running 300 MB into swap on NVMe serves them in 900 ms\u20132 s, with occasional multi-second stalls while the page cache is evicted.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># are you actually swapping under load? (si\/so should stay near 0)\nvmstat 1 20\n\n# which processes are resident vs swapped\nfor p in $(pgrep -f php-fpm); do grep -E 'VmRSS|VmSwap' \/proc\/$p\/status | tr '\\n' ' '; echo; done<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">If sustained <code>si<\/code>\/<code>so<\/code> is above zero while traffic is normal, the plan is undersized and no amount of tuning will fix it. That is the correct signal to move up a tier rather than add more swap.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Cheapest upgrade order<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Before paying for more RAM, exhaust these in order \u2014 each is free or nearly free and each reduces the RAM figure above:<\/p>\n\n\n\n<ol class=\"wp-block-list\"><li>Tune PHP-FPM <code>pm.max_children<\/code> to match available RAM instead of leaving the default.<\/li><li>Enable a full-page cache and a bytecode cache (OPcache) with adequate <code>opcache.memory_consumption<\/code>.<\/li><li>Cap database buffer pool to fit, and add indexes to remove sort-based memory growth.<\/li><li>Move static assets to a CDN or object storage so they never touch the VPS.<\/li><li>Only then upgrade RAM.<\/li><\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Steps one through four typically reduce required RAM by 30\u201350% on budget plans. If you want to see what that costs at each tier, <a href=\"https:\/\/affordablevpsserver.com\/\">compare budget VPS plans side by side<\/a> and match the memory column to the measured figure for your stack rather than to the marketing number.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Why idle measurements mislead<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The most common sizing error is reading memory right after setup, when the site has no visitors. A freshly booted WordPress install with no traffic shows about 190 MB of PHP-FPM usage. Under real traffic, worker processes spawn and that figure triples. Size against the post-traffic number or you will buy the smallest plan and then be forced to commit to more RAM within weeks.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Set up a simple capture so you have the real figure before you buy the next plan:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># hourly memory snapshot, appended to a log\nwhile true; do\n  echo \"$(date -Is) $(free -m | awk '\/Mem:\/ {print $3\" MB used\"}') $(uptime | awk -F'load average:' '{print \"load\"$2}')\" &gt;&gt; \/var\/log\/mem.log\n  sleep 3600\ndone\n\n# peak over a week\nsort -k3 -n \/var\/log\/mem.log | tail -5<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">One week of hourly samples gives you the true peak, which is what you size on. The daily average will always look survivable; the peak is what causes restarts at 3 a.m.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Cheap VPS RAM is not the same RAM<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Two plans both advertising 2 GB are not equivalent. Check whether the provider lists <em>dedicated<\/em> or <em>guaranteed<\/em> RAM, whether there is a balloon driver (some KVM hosts reclaim idle memory under pressure), and whether the host uses memory overcommit. On an oversubscribed node, your pages can be evicted to swap by a noisy neighbour even though your own usage has not changed.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">You can detect this without provider cooperation: if <code>si<\/code>\/<code>so<\/code> in <code>vmstat<\/code> rises while your own application&#8217;s RSS is flat, the pressure is coming from outside your VM. That is a signal to leave the plan, not to tune it.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The sizing decision in one line<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Measure, do not guess: add your stack&#8217;s steady-state RSS, multiply by 1.4 for peak, and confirm the plan lists guaranteed memory. If the answer exceeds the plan you are considering, the free optimisation steps will usually bring it back under \u2014 and if they do not, you need the next tier, not more swap. When you are ready to price the options, <a href=\"https:\/\/affordablevpsserver.com\/\">our VPS comparison table<\/a> lists guaranteed RAM per plan so you can match the measured figure directly to a tier instead of to an advertised number.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>&#8220;How much RAM does my website need?&#8221; is normally answered with a range so wide it is useless. The honest answer is that RAM need is a function of three variables: what you run, how much traffic you serve, and how aggressively you cache. Change any one and the number moves. Below are measured resident-memory [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"iawp_total_views":2,"footnotes":""},"categories":[2],"tags":[],"class_list":["post-1214","post","type-post","status-publish","format-standard","hentry","category-budget-vps-guides"],"blocksy_meta":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.1 (Yoast SEO v26.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>RAM Sizing for a Small Business Website: Measured Memory by CMS and Traffic Level - Affordable VPS Server Blog<\/title>\n<meta name=\"description\" content=\"&quot;How much RAM does my website need?&quot; is normally answered with a range so wide it is useless. The honest answer is that RAM need is a function of three\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/affordablevpsserver.com\/blog\/how-much-ram-small-business-website-actually-need\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"RAM Sizing for a Small Business Website: Measured Memory by CMS and Traffic Level\" \/>\n<meta property=\"og:description\" content=\"RAM Sizing for a Small Business Website: Measured Memory by CMS and Traffic Level\" \/>\n<meta property=\"og:url\" content=\"https:\/\/affordablevpsserver.com\/blog\/how-much-ram-small-business-website-actually-need\/\" \/>\n<meta property=\"og:site_name\" content=\"Affordable VPS Server Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-17T23:13:38+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-09-28T22:02:58+00:00\" \/>\n<meta name=\"author\" content=\"Affordable-Vps-Server-Author\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Affordable-Vps-Server-Author\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/affordablevpsserver.com\/blog\/how-much-ram-small-business-website-actually-need\/\",\"url\":\"https:\/\/affordablevpsserver.com\/blog\/how-much-ram-small-business-website-actually-need\/\",\"name\":\"RAM Sizing for a Small Business Website: Measured Memory by CMS and Traffic Level - Affordable VPS Server Blog\",\"isPartOf\":{\"@id\":\"https:\/\/affordablevpsserver.com\/blog\/#website\"},\"datePublished\":\"2026-09-17T23:13:38+00:00\",\"dateModified\":\"2026-09-28T22:02:58+00:00\",\"author\":{\"@id\":\"https:\/\/affordablevpsserver.com\/blog\/#\/schema\/person\/685a02c93a3c45030f7427ec928b0df7\"},\"description\":\"\\\"How much RAM does my website need?\\\" is normally answered with a range so wide it is useless. The honest answer is that RAM need is a function of three\",\"breadcrumb\":{\"@id\":\"https:\/\/affordablevpsserver.com\/blog\/how-much-ram-small-business-website-actually-need\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/affordablevpsserver.com\/blog\/how-much-ram-small-business-website-actually-need\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/affordablevpsserver.com\/blog\/how-much-ram-small-business-website-actually-need\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/affordablevpsserver.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"RAM Sizing for a Small Business Website: Measured Memory by CMS and Traffic Level\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/affordablevpsserver.com\/blog\/#website\",\"url\":\"https:\/\/affordablevpsserver.com\/blog\/\",\"name\":\"Affordable VPS Server Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/affordablevpsserver.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/affordablevpsserver.com\/blog\/#\/schema\/person\/685a02c93a3c45030f7427ec928b0df7\",\"name\":\"Affordable-Vps-Server-Author\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/affordablevpsserver.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/8fa20973a7dd04621d396c26ba26b5c5e6c19595583335121958527393f6f95e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/8fa20973a7dd04621d396c26ba26b5c5e6c19595583335121958527393f6f95e?s=96&d=mm&r=g\",\"caption\":\"Affordable-Vps-Server-Author\"},\"sameAs\":[\"https:\/\/affordablevpsserver.com\/blog\"],\"url\":\"https:\/\/affordablevpsserver.com\/blog\/author\/affordablevpsserver\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"RAM Sizing for a Small Business Website: Measured Memory by CMS and Traffic Level - Affordable VPS Server Blog","description":"\"How much RAM does my website need?\" is normally answered with a range so wide it is useless. The honest answer is that RAM need is a function of three","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/affordablevpsserver.com\/blog\/how-much-ram-small-business-website-actually-need\/","og_locale":"en_US","og_type":"article","og_title":"RAM Sizing for a Small Business Website: Measured Memory by CMS and Traffic Level","og_description":"RAM Sizing for a Small Business Website: Measured Memory by CMS and Traffic Level","og_url":"https:\/\/affordablevpsserver.com\/blog\/how-much-ram-small-business-website-actually-need\/","og_site_name":"Affordable VPS Server Blog","article_published_time":"2026-09-17T23:13:38+00:00","article_modified_time":"2026-09-28T22:02:58+00:00","author":"Affordable-Vps-Server-Author","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Affordable-Vps-Server-Author","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/affordablevpsserver.com\/blog\/how-much-ram-small-business-website-actually-need\/","url":"https:\/\/affordablevpsserver.com\/blog\/how-much-ram-small-business-website-actually-need\/","name":"RAM Sizing for a Small Business Website: Measured Memory by CMS and Traffic Level - Affordable VPS Server Blog","isPartOf":{"@id":"https:\/\/affordablevpsserver.com\/blog\/#website"},"datePublished":"2026-09-17T23:13:38+00:00","dateModified":"2026-09-28T22:02:58+00:00","author":{"@id":"https:\/\/affordablevpsserver.com\/blog\/#\/schema\/person\/685a02c93a3c45030f7427ec928b0df7"},"description":"\"How much RAM does my website need?\" is normally answered with a range so wide it is useless. The honest answer is that RAM need is a function of three","breadcrumb":{"@id":"https:\/\/affordablevpsserver.com\/blog\/how-much-ram-small-business-website-actually-need\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/affordablevpsserver.com\/blog\/how-much-ram-small-business-website-actually-need\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/affordablevpsserver.com\/blog\/how-much-ram-small-business-website-actually-need\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/affordablevpsserver.com\/blog\/"},{"@type":"ListItem","position":2,"name":"RAM Sizing for a Small Business Website: Measured Memory by CMS and Traffic Level"}]},{"@type":"WebSite","@id":"https:\/\/affordablevpsserver.com\/blog\/#website","url":"https:\/\/affordablevpsserver.com\/blog\/","name":"Affordable VPS Server Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/affordablevpsserver.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/affordablevpsserver.com\/blog\/#\/schema\/person\/685a02c93a3c45030f7427ec928b0df7","name":"Affordable-Vps-Server-Author","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/affordablevpsserver.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/8fa20973a7dd04621d396c26ba26b5c5e6c19595583335121958527393f6f95e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/8fa20973a7dd04621d396c26ba26b5c5e6c19595583335121958527393f6f95e?s=96&d=mm&r=g","caption":"Affordable-Vps-Server-Author"},"sameAs":["https:\/\/affordablevpsserver.com\/blog"],"url":"https:\/\/affordablevpsserver.com\/blog\/author\/affordablevpsserver\/"}]}},"_links":{"self":[{"href":"https:\/\/affordablevpsserver.com\/blog\/wp-json\/wp\/v2\/posts\/1214","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/affordablevpsserver.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/affordablevpsserver.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/affordablevpsserver.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/affordablevpsserver.com\/blog\/wp-json\/wp\/v2\/comments?post=1214"}],"version-history":[{"count":2,"href":"https:\/\/affordablevpsserver.com\/blog\/wp-json\/wp\/v2\/posts\/1214\/revisions"}],"predecessor-version":[{"id":1319,"href":"https:\/\/affordablevpsserver.com\/blog\/wp-json\/wp\/v2\/posts\/1214\/revisions\/1319"}],"wp:attachment":[{"href":"https:\/\/affordablevpsserver.com\/blog\/wp-json\/wp\/v2\/media?parent=1214"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/affordablevpsserver.com\/blog\/wp-json\/wp\/v2\/categories?post=1214"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/affordablevpsserver.com\/blog\/wp-json\/wp\/v2\/tags?post=1214"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}