{"id":6277,"date":"2026-09-16T10:43:11","date_gmt":"2026-09-16T07:43:11","guid":{"rendered":"https:\/\/www.scalahosting.com\/kb\/?p=6277"},"modified":"2026-09-16T10:43:12","modified_gmt":"2026-09-16T07:43:12","slug":"spanel-package-limits-explained","status":"publish","type":"post","link":"https:\/\/www.scalahosting.com\/kb\/spanel-package-limits-explained\/","title":{"rendered":"The 14 Dials of an SPanel Package: What Each Limit Does and When to Use It"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">An SPanel package is a named hosting plan built from fourteen per-account limits: <strong>disk space, inodes, domains, email accounts, databases, hourly email rate, PHP workers, PHP priority, and the kernel-enforced ceilings on CPU, memory, disk throughput, disk IOPS, and processes &#8211; plus a feature set.<\/strong> You set each dial once, assign the package to an account, and SPanel holds the line. Every dial is included free on ScalaHosting managed VPS plans.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Imagine this story.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ana runs a 60-account SPanel server out of France. She resells shared hosting to local shops, a dental clinic, and three small design agencies who each park a dozen client sites on her box. The first time she opened the package form in the Admin Interface, she counted fourteen fields and felt the usual question land: <em>which of these actually matter, and what number am I supposed to type<\/em>?&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Most panel documentation explains <em>how<\/em> to save a package. Almost none explains what each limit does when an account pushes against it, or what a sane starting value looks like. This is that field guide &#8211; one dial at a time.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">To put it simply, a package is a named bundle of fourteen account limits that SPanel applies in a single move and enforces below the panel &#8211; in the kernel, the filesystem, the mail server, and the PHP runtime.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Hold onto that last point. None of these limits is honor-system validation in a web form. Each one is enforced by the part of the system that owns the resource, so the ceiling holds whether the account is driven through the panel, the <a href=\"https:\/\/www.spanel.io\/docs\">SPanel HTTP API<\/a>, an SSH session, or your billing automation.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>The storage pair: disk quota and inodes<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Disk quota (MB)<\/strong> caps how much disk space the account may use. <strong>Inodes<\/strong> caps how many files and directories it may create. They go together because they catch two different failures. Quota stops the obvious one: a backup archive or an unpruned upload folder eating the drive. The inodes limit stops the subtle one: millions of tiny files (cache fragments, PHP session files, mail spam) exhausting the filesystem long before the gigabytes run out.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>At the ceiling:<\/em> both are real filesystem quotas, applied through the kernel&#8217;s quota machinery on ext4 and XFS. An account at quota gets &#8220;disk full&#8221; from the operating system itself when it tries to write, not a polite note from a web page. Existing data stays put; only new writes are refused. SPanel emails a warning to the account&#8217;s own contact address when usage crosses 95% of quota, so the wall rarely arrives as a surprise.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>A sensible start (plan-design judgment):<\/em> for a small single-site plan, 10 GB of quota paired with roughly 250,000 inodes keeps a normal WordPress or WooCommerce store comfortable. Raise both together as the plan grows; a quota with no inode ceiling is a quota with a back door.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>The creation counts: domains, email accounts, databases<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Maximum domains<\/strong>, <strong>maximum email accounts<\/strong>, and <strong>maximum databases<\/strong> define the <em>shape<\/em> of a plan rather than its horsepower. A Starter plan might be one site, ten mailboxes, two databases; a Pro plan, unlimited of each.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>At the ceiling:<\/em> these are checked at creation time by the SPanel system scripts. An account at its domain ceiling is told so, clearly, the moment it tries to add another, in the panel and at the system level alike.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>One honest detail worth knowing<\/strong>: lowering an account&#8217;s database limit from ten to five does not delete five databases. Creation counts gate new growth; they never reach back and destroy data. The account simply can&#8217;t create the eleventh until it&#8217;s under the line again.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>A sensible start:<\/em> match the counts to the story you&#8217;re selling. If &#8220;one website&#8221; is the product, set domains to 1 and let mailboxes and databases breathe a little above what a single site needs.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>The email send rate<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Max hourly emails<\/strong> &#8211; the per-account outgoing-message cap &#8211; is the anti-spam and reputation dial, enforced by the Exim mail server&#8217;s own rate-limiting rather than by anything in the panel.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>At the ceiling:<\/em> a hijacked contact form or a compromised plugin hits the hourly cap and stops, instead of pumping thousands of messages from your shared IP and getting it blacklisted. The limit can target a single mailbox or a single domain when one sender is the problem, and a server-wide <strong>Email Sending Limit<\/strong>, under <em>Server Settings<\/em> \u2192 <em>Email Settings<\/em>, is available as a backstop. Every day, SPanel scans the previous day&#8217;s mail log and emails you a summary of any accounts that went over &#8211; the compromise canary you didn&#8217;t have to build. We go deeper on this in our piece on <a href=\"https:\/\/www.scalahosting.com\/blog\/why-do-emails-sent-from-web-hosting-services-go-to-spam\/\">catching spam before it torches your server IP<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>A sensible start:<\/em> a few hundred messages an hour covers legitimate transactional mail for most small sites. If a client genuinely sends newsletters, route them to a dedicated sending service rather than lifting the cap to thousands.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>The PHP pair: workers and priority<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Maximum PHP-FPM workers<\/strong> sets how many PHP requests an account can process at once. <strong>PHP priority<\/strong> &#8211; high, medium, or low &#8211; decides whose PHP gets the CPU first when the server is contended.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>At the ceiling:<\/em> the worker ceiling is written into the account&#8217;s own PHP-FPM pool (and the OpenLiteSpeed equivalent on that stack), so it&#8217;s the PHP runtime itself that declines to spawn worker sixteen when the plan says fifteen. Priority is applied as real operating-system process priority, so a high-priority plan&#8217;s PHP genuinely runs ahead of a low-priority plan&#8217;s under load. There&#8217;s also a quick admin action &#8211; <strong>Change Limits<\/strong> on the account, reached from its row&#8217;s Actions menu &#8211; to clamp a single account&#8217;s workers on the spot, for the account that&#8217;s overloading a shared box this minute.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>A sensible start:<\/em> the default worker ceiling is 15 per account, which suits most plans; leave priority at medium and reserve high for premium tiers, so the ladder means something.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Pull quote:<\/strong> &#8220;The panel is where you set a limit. The kernel, the filesystem, the mail server, and the PHP runtime are where it actually holds.&#8221;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Want to follow along on a live panel?<\/strong> Every dial described here ships with SPanel on ScalaHosting&#8217;s managed VPS plans &#8211; no separate license, no per-account add-on. If you already run a managed VPS, the package form is sitting in your Admin Interface right now, ready to open alongside this guide.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>The performance four: CPU, memory, disk throughput, and IOPS<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">These are the kernel-enforced ceilings, and they&#8217;re the reason per-account limiting used to mean buying a separate, paid operating-system layer. SPanel enforces them natively with Linux control groups &#8211; <a href=\"https:\/\/docs.kernel.org\/admin-guide\/cgroup-v2.html\" rel=\"nofollow\">cgroups v2<\/a>, the same mechanism the entire container world is built on. A small SPanel service called cpm sweeps once per second and places every limited account&#8217;s processes into that account&#8217;s control group. New process, about a second, contained.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>CPU limit<\/strong> is a percentage where 100 equals one full core, 50 is half a core, and 200 is two cores. It is a share of a core, not a share of the whole server, and that one sentence prevents the most common misreading of this dial. <em>At the ceiling:<\/em> the account is throttled, not killed. Its processes simply receive no more than their share of CPU time; the site slows under its own excess load while every other account keeps full speed. Nothing crashes, nothing is lost.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Memory limit (MB)<\/strong> caps the account&#8217;s RAM. <em>At the ceiling:<\/em> the kernel reclaims memory <em>inside that account&#8217;s group only<\/em>, in the worst case ending the account&#8217;s own offending process, and the rest of the server never feels it. SPanel&#8217;s health monitoring even tells the two apart: a true server-wide out-of-memory event raises an admin alert, while a per-account containment event is recognized as a limit doing its job, not an emergency.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Disk throughput (MB\/s)<\/strong> and <strong>IOPS<\/strong> put each account&#8217;s storage traffic in its own lane: throughput is the volume of data moving to and from the disk, IOPS is the count of separate operations. This is storage traffic, not network traffic; ScalaHosting&#8217;s managed VPS plans come with unmetered network traffic, and these dials have nothing to do with it. <em>At the ceiling:<\/em> over-limit reads and writes are queued, not failed. The heavy account&#8217;s nightly backup takes longer; everyone else&#8217;s latency stays flat.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">There&#8217;s a server-wide <strong>burst mode<\/strong> sitting over all four. With it on, enforcement engages only when server load reaches the core count (genuine pressure), so accounts can use idle capacity on a quiet server and get strict fair shares on a busy one, within about a second of the pressure starting. It&#8217;s load-aware generosity with a fairness trigger, and it earns its own article on hosting limits that stand down when the server is idle.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>A sensible start:<\/em> for a standard small-business plan, 100 CPU (one full core), 1 GB of memory, and modest disk throughput and IOPS lanes give a site real headroom without letting any single account monopolize the box. Size memory with care, because too tight a ceiling reclaims the account&#8217;s own work mid-task. Pair this dial with honest sizing rather than treating smaller as better.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>The process ceiling<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Maximum Total Processes<\/strong> caps how many simultaneous processes the account may run. It&#8217;s fork-bomb insurance and general containment in one number.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>At the ceiling:<\/em> process N+1 simply cannot start. A fork bomb, malicious or a buggy script gone sideways, hits the cap and fizzles instead of exhausting the server&#8217;s process table and taking everyone down with it. This is the failure that&#8217;s catastrophic without a limit and a complete non-event with one.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>A sensible start:<\/em> a few hundred processes covers a busy site with room to spare; the goal is a ceiling high enough that legitimate traffic never touches it and low enough that a runaway can&#8217;t consume the whole server.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>The feature set<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The fourteenth dial isn&#8217;t a number. <strong>The feature set<\/strong> decides which SPanel User Interface tools accounts on this package can use. The default is everything.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>At the ceiling:<\/em> there isn&#8217;t one in the throttling sense. A feature that&#8217;s off the set simply isn&#8217;t shown to the account. What it buys you is product design. A curated subset turns a budget tier into a genuinely <em>simpler<\/em> product rather than merely a smaller one, and lets a premium tier look visibly richer. Selling &#8220;fewer, clearer tools&#8221; is a real plan differentiator, not a downgrade.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>The fourteen dials at a glance<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The values below are illustrative plan-design judgment for a small single-site plan, not product defaults &#8211; tune them to what you actually sell.<\/p>\n\n\n\n<figure class=\"wp-block-table is-style-regular green-rows\"><table class=\"has-fixed-layout\"><tbody><tr><td>Dial<\/td><td>What it limits<\/td><td>At the ceiling<\/td><td>A sensible start<\/td><\/tr><tr><td>Disk quota<\/td><td>Disk space (MB)<\/td><td>&#8220;Disk full&#8221; on new writes<\/td><td>10 GB<\/td><\/tr><tr><td>Inodes<\/td><td>File\/directory count<\/td><td>New files refused<\/td><td>~250,000<\/td><\/tr><tr><td>Max domains<\/td><td>Sites the account can add<\/td><td>Creation declined<\/td><td>1<\/td><\/tr><tr><td>Max email accounts<\/td><td>Mailboxes<\/td><td>Creation declined<\/td><td>10<\/td><\/tr><tr><td>Max databases<\/td><td>Databases<\/td><td>Creation declined<\/td><td>2<\/td><\/tr><tr><td>Hourly email<\/td><td>Outgoing messages\/hour<\/td><td>Further sends held by Exim<\/td><td>a few hundred<\/td><\/tr><tr><td>PHP workers<\/td><td>Simultaneous PHP requests<\/td><td>Worker not spawned<\/td><td>15 (default)<\/td><\/tr><tr><td>PHP priority<\/td><td>CPU order under load<\/td><td>Lower priority waits<\/td><td>medium<\/td><\/tr><tr><td>CPU<\/td><td>Share of a core (100 = one core)<\/td><td>Throttled, not killed<\/td><td>100<\/td><\/tr><tr><td>Memory<\/td><td>RAM (MB)<\/td><td>Reclaimed inside the account<\/td><td>1 GB<\/td><\/tr><tr><td>Disk throughput<\/td><td>Storage MB\/s<\/td><td>Queued, not failed<\/td><td>modest lane<\/td><\/tr><tr><td>IOPS<\/td><td>Disk operations\/sec<\/td><td>Queued, not failed<\/td><td>modest lane<\/td><\/tr><tr><td>Processes<\/td><td>Simultaneous processes<\/td><td>The fork fails<\/td><td>a few hundred<\/td><\/tr><tr><td>Feature set<\/td><td>Which UI tools show<\/td><td>Tool hidden from account<\/td><td>everything<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Any dial can be left unlimited; a package only enforces what you set. And every dial exists in two forms: as part of a named package, and as a per-account custom value set through <strong>Use Custom Limits<\/strong> in the account&#8217;s <strong>Change Limits<\/strong> action &#8211; the clean home for one-off deals that shouldn&#8217;t pollute your plan catalog.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Demo flow: reading the package form, dial by dial<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">These steps walk the Admin Interface screens where the fourteen dials live and where you watch them take effect.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>From the <strong>Admin Interface<\/strong>, open <strong>Packages<\/strong>. The list shows every package you&#8217;ve defined, with its key limits at a glance &#8211; the columns run <em>Name, Quota, Domains, CPU, RAM, Max PHP, Priority,<\/em> and <em>Owner<\/em>.<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image size-large mpg-gallery\"><img decoding=\"async\" width=\"1024\" height=\"640\" src=\"https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/09\/01-packages-list-1024x640.webp\" alt=\"The 14 Dials of an SPanel Package: What Each Limit Does and When to Use It, Demo flow: reading the package form, dial by dial\" class=\"wp-image-6280\" srcset=\"https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/09\/01-packages-list-1024x640.webp 1024w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/09\/01-packages-list-300x188.webp 300w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/09\/01-packages-list-768x480.webp 768w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/09\/01-packages-list.webp 1440w\" sizes=\"(max-width: 361px) 660px, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 910px, 1140px\" \/><\/figure>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>Click <strong>Create a New Package<\/strong> (or edit an existing one). The <strong>Basic Limits<\/strong> tab holds the storage pair and the creation counts &#8211; Disk Space Limit, Inodes Limit, Addon Domains Limit, Email Accounts Limit, MySQL Databases Limit &#8211; plus <strong>Max hourly emails<\/strong>.<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image size-large mpg-gallery\"><img decoding=\"async\" width=\"1024\" height=\"640\" src=\"https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/09\/02-package-form-storage-counts-1024x640.webp\" alt=\"The 14 Dials of an SPanel Package: What Each Limit Does and When to Use It, Demo flow: reading the package form, dial by dial 2\" class=\"wp-image-6281\" srcset=\"https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/09\/02-package-form-storage-counts-1024x640.webp 1024w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/09\/02-package-form-storage-counts-300x188.webp 300w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/09\/02-package-form-storage-counts-768x480.webp 768w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/09\/02-package-form-storage-counts.webp 1440w\" sizes=\"(max-width: 361px) 660px, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 910px, 1140px\" \/><\/figure>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>Open the <strong>Advanced Limits<\/strong> tab. Here are the kernel-enforced dials &#8211; CPU Limit, Memory Limit, Storage Transfer Rate (disk throughput), IOPS Limit, and Maximum Total Processes &#8211; alongside Maximum PHP-FPM Processes (the PHP workers) and the PHP-FPM Priority select.<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image size-large mpg-gallery\"><img decoding=\"async\" width=\"1024\" height=\"640\" src=\"https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/09\/03-package-form-kernel-limits-1024x640.webp\" alt=\"The 14 Dials of an SPanel Package: What Each Limit Does and When to Use It, Demo flow: reading the package form, dial by dial 3\" class=\"wp-image-6282\" srcset=\"https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/09\/03-package-form-kernel-limits-1024x640.webp 1024w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/09\/03-package-form-kernel-limits-300x188.webp 300w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/09\/03-package-form-kernel-limits-768x480.webp 768w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/09\/03-package-form-kernel-limits.webp 1440w\" sizes=\"(max-width: 361px) 660px, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 910px, 1140px\" \/><\/figure>\n\n\n\n<ol start=\"4\" class=\"wp-block-list\">\n<li>Open <strong>Features Access<\/strong> &#8211; the feature-set selector &#8211; to choose which User Interface tools this package exposes to its accounts.<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image size-large mpg-gallery\"><img decoding=\"async\" width=\"1024\" height=\"640\" src=\"https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/09\/04-feature-set-selector-1024x640.webp\" alt=\"The 14 Dials of an SPanel Package: What Each Limit Does and When to Use It, Demo flow: reading the package form, dial by dial 4\" class=\"wp-image-6283\" srcset=\"https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/09\/04-feature-set-selector-1024x640.webp 1024w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/09\/04-feature-set-selector-300x188.webp 300w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/09\/04-feature-set-selector-768x480.webp 768w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/09\/04-feature-set-selector.webp 1440w\" sizes=\"(max-width: 361px) 660px, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 910px, 1140px\" \/><\/figure>\n\n\n\n<ol start=\"5\" class=\"wp-block-list\">\n<li>Save, then open <strong>Manage Accounts<\/strong> (the List Accounts screen). Each account row shows its Inodes used and its assigned Package; expand a row to see Disk Usage against its Quota ceiling.<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image size-large mpg-gallery\"><img decoding=\"async\" width=\"1024\" height=\"640\" src=\"https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/09\/05-accounts-usage-1024x640.webp\" alt=\"The 14 Dials of an SPanel Package: What Each Limit Does and When to Use It, Demo flow: reading the package form, dial by dial 5\" class=\"wp-image-6284\" srcset=\"https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/09\/05-accounts-usage-1024x640.webp 1024w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/09\/05-accounts-usage-300x188.webp 300w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/09\/05-accounts-usage-768x480.webp 768w, https:\/\/www.scalahosting.com\/kb\/wp-content\/uploads\/2026\/09\/05-accounts-usage.webp 1440w\" sizes=\"(max-width: 361px) 660px, (max-width: 767px) 89vw, (max-width: 1000px) 54vw, (max-width: 1071px) 910px, 1140px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">To watch a runaway account get caught instead of catching it by hand, the same dials drive the containment story in how one bad plugin used to take down twenty good sites, and the full hands-on setup lives in per-account limits without a CloudLinux license.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>See it on a real server.<\/strong> Every dial in this guide ships on every ScalaHosting managed VPS at no extra cost &#8211; no per-account fees, no premium tier. Start a ScalaHosting trial to open the package form yourself, or vote for what we build next on the Cloud Democracy board at <a href=\"https:\/\/features.spanel.io\/\">features.spanel.io<\/a>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>FAQ<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Q:<\/strong> <strong>What resource limits can I set per hosting account on SPanel?<\/strong> <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>A:<\/strong> Disk space and inodes; the number of domains, email accounts, and databases; outgoing emails per hour; PHP workers and priority; and kernel-enforced ceilings on CPU, memory, disk throughput, IOPS, and simultaneous processes. Any of them can be left unlimited.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Q:<\/strong> <strong>What does a CPU limit of 100 mean?<\/strong> <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>A:<\/strong> One full CPU core. 50 is half a core; 200 is two cores. The percentage is of a core, not of the whole server.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Q:<\/strong> <strong>Do I need CloudLinux to limit CPU and RAM per account?<\/strong> <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>A:<\/strong> No. SPanel enforces CPU, memory, disk throughput, IOPS, and process limits natively through the Linux kernel&#8217;s control groups (cgroups v2), with no separate OS layer or license. To be precise about scope: this is resource limiting, not a claim of CageFS-style per-account filesystem virtualization &#8211; account isolation comes from standard Linux users and permissions plus the SShield security stack.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Q:<\/strong> <strong>What happens when an account hits its memory limit?<\/strong> <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>A:<\/strong> The kernel reclaims memory inside that account&#8217;s group only, in the worst case ending the account&#8217;s own offending process. The rest of the server keeps running, and SPanel treats a server-wide memory emergency as a separate event with its own alert.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Q:<\/strong> <strong>Is the disk throughput limit my internet bandwidth?<\/strong> <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>A:<\/strong> No. The MB\/s dial governs storage traffic &#8211; how fast the account reads and writes files on disk. It has nothing to do with network traffic, and ScalaHosting&#8217;s managed VPS plans come with unmetered network traffic.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Q:<\/strong> <strong>If I lower an account&#8217;s database limit, are databases deleted?<\/strong> <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>A:<\/strong> No. Creation counts gate new creation; they never delete existing data. The account just can&#8217;t create more until it&#8217;s back under the ceiling.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Q:<\/strong> <strong>How fast do the limits take effect?<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>A:<\/strong> The cpm enforcement service sweeps every second, so a new process is confined within about a second. Plan assignments and limit changes apply immediately and in place, with no migration.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Q:<\/strong> <strong>Can I sell plans that differ in features, not just size?<\/strong> <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>A:<\/strong> Yes. The feature set decides which User Interface tools a package exposes. The default is everything; a curated subset makes a budget tier a genuinely simpler product.<\/p>\n\n\n\n<script type=\"application\/ld+json\">\n    {\n      \"@context\": \"https:\/\/schema.org\",\n      \"@type\": \"FAQPage\",\n      \"mainEntity\": [{\n        \"@type\": \"Question\",\n        \"name\": \"What resource limits can I set per hosting account on SPanel?\",\n        \"acceptedAnswer\": {\n          \"@type\": \"Answer\",\n          \"text\": \"Disk space and inodes; the number of domains, email accounts, and databases; outgoing emails per hour; PHP workers and priority; and kernel-enforced ceilings on CPU, memory, disk throughput, IOPS, and simultaneous processes. Any of them can be left unlimited.\"\n        }\n      }, {\n        \"@type\": \"Question\",\n        \"name\": \"What does a CPU limit of 100 mean?\",\n        \"acceptedAnswer\": {\n          \"@type\": \"Answer\",\n          \"text\": \"One full CPU core. 50 is half a core; 200 is two cores. The percentage is of a core, not of the whole server.\"\n        }\n      },{\n        \"@type\": \"Question\",\n        \"name\": \"Do I need CloudLinux to limit CPU and RAM per account?\",\n        \"acceptedAnswer\": {\n          \"@type\": \"Answer\",\n          \"text\": \"No. SPanel enforces CPU, memory, disk throughput, IOPS, and process limits natively through the Linux kernel's control groups (cgroups v2), with no separate OS layer or license. To be precise about scope: this is resource limiting, not a claim of CageFS-style per-account filesystem virtualization - account isolation comes from standard Linux users and permissions plus the SShield security stack.\"\n        }\n      },{\n        \"@type\": \"Question\",\n        \"name\": \"What happens when an account hits its memory limit?\",\n        \"acceptedAnswer\": {\n          \"@type\": \"Answer\",\n          \"text\": \"The kernel reclaims memory inside that account's group only, in the worst case ending the account's own offending process. The rest of the server keeps running, and SPanel treats a server-wide memory emergency as a separate event with its own alert.\"\n        }\n      },{\n        \"@type\": \"Question\",\n        \"name\": \"Is the disk throughput limit my internet bandwidth?\",\n        \"acceptedAnswer\": {\n          \"@type\": \"Answer\",\n          \"text\": \"No. The MB\/s dial governs storage traffic - how fast the account reads and writes files on disk. It has nothing to do with network traffic, and ScalaHosting's managed VPS plans come with unmetered network traffic.\"\n        }\n      },{\n        \"@type\": \"Question\",\n        \"name\": \"If I lower an account's database limit, are databases deleted?\",\n        \"acceptedAnswer\": {\n          \"@type\": \"Answer\",\n          \"text\": \"No. Creation counts gate new creation; they never delete existing data. The account just can't create more until it's back under the ceiling.\"\n        }\n      },{\n        \"@type\": \"Question\",\n        \"name\": \"How fast do the limits take effect?\",\n        \"acceptedAnswer\": {\n          \"@type\": \"Answer\",\n          \"text\": \"The cpm enforcement service sweeps every second, so a new process is confined within about a second. Plan assignments and limit changes apply immediately and in place, with no migration.\"\n        }\n      },{\n        \"@type\": \"Question\",\n        \"name\": \"Can I sell plans that differ in features, not just size?\",\n        \"acceptedAnswer\": {\n          \"@type\": \"Answer\",\n          \"text\": \"Yes. The feature set decides which User Interface tools a package exposes. The default is everything; a curated subset makes a budget tier a genuinely simpler product.\"\n        }\n      }]\n    }\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>An SPanel package is a named hosting plan built from fourteen per-account limits: disk space, inodes, domains, email accounts, databases, hourly email rate, PHP workers, PHP priority, and the kernel-enforced ceilings on CPU, memory, disk throughput, disk IOPS, and processes &#8211; plus a feature set. You set each dial once, assign the package to an [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_seopress_titles_title":"The 14 SPanel Package Limits: What They Do and When to Use | ScalaHosting KB","_seopress_titles_desc":"Learn what each of the 14 SPanel package limits controls, when to adjust them, and how to create balanced hosting plans for every client.","_seopress_robots_index":"","_seopress_robots_follow":"","_seopress_robots_imageindex":"","_seopress_robots_snippet":"","_seopress_robots_primary_cat":"","_seopress_robots_breadcrumbs":"","_seopress_robots_freeze_modified_date":"","_seopress_robots_custom_modified_date":"","_seopress_robots_canonical":"","_seopress_social_fb_title":"","_seopress_social_fb_desc":"","_seopress_social_fb_img":"","_seopress_social_fb_img_attachment_id":0,"_seopress_social_fb_img_width":0,"_seopress_social_fb_img_height":0,"_seopress_social_twitter_title":"","_seopress_social_twitter_desc":"","_seopress_social_twitter_img":"","_seopress_social_twitter_img_attachment_id":0,"_seopress_social_twitter_img_width":0,"_seopress_social_twitter_img_height":0,"_seopress_redirections_value":"","_seopress_redirections_enabled":"","_seopress_redirections_enabled_regex":"","_seopress_redirections_logged_status":"","_seopress_redirections_param":"","_seopress_redirections_type":0,"_seopress_analysis_target_kw":"","_seopress_news_disabled":"","_seopress_video_disabled":"","_seopress_video":[],"_seopress_pro_schemas_manual":[],"_seopress_pro_rich_snippets_disable_all":"","_seopress_pro_rich_snippets_disable":[],"_seopress_pro_schemas":[],"footnotes":""},"categories":[66],"tags":[],"class_list":["post-6277","post","type-post","status-publish","format-standard","hentry","category-tutorials"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.scalahosting.com\/kb\/wp-json\/wp\/v2\/posts\/6277","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.scalahosting.com\/kb\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.scalahosting.com\/kb\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.scalahosting.com\/kb\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.scalahosting.com\/kb\/wp-json\/wp\/v2\/comments?post=6277"}],"version-history":[{"count":6,"href":"https:\/\/www.scalahosting.com\/kb\/wp-json\/wp\/v2\/posts\/6277\/revisions"}],"predecessor-version":[{"id":6291,"href":"https:\/\/www.scalahosting.com\/kb\/wp-json\/wp\/v2\/posts\/6277\/revisions\/6291"}],"wp:attachment":[{"href":"https:\/\/www.scalahosting.com\/kb\/wp-json\/wp\/v2\/media?parent=6277"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.scalahosting.com\/kb\/wp-json\/wp\/v2\/categories?post=6277"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.scalahosting.com\/kb\/wp-json\/wp\/v2\/tags?post=6277"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}