Skip to content

Web Hosting with cPanel: A Practical Guide

Section 1 of 7
Size 3 of 5

Hosting03/08Part of the “From shared hosting to your own server” track · Article 4 of 8

Web Hosting with cPanel: A Practical Guide

Where everything lives in cPanel, how to read CloudLinux limits in Resource Usage, Softaculous, JetBackup and uapi, and what causes 508 and 503 errors.

Abdulwahed MohammadContent writer at tech+8 min read

Your visitors see “508 Resource Limit Is Reached” every day around 10 am, then it goes away. The server isn’t down, and your neighbours on the same server aren’t complaining: your account alone has hit one of its limits. That idea explains most of what happens on shared cPanel hosting: every account runs inside fixed limits enforced by CloudLinux, and every tool in the panel works within them. This guide covers where to manage everything in cPanel, how to read your account’s limits, how to use the terminal and uapi, and what lies behind the common errors.

01The cPanel map: what you manage where

cPanel’s current interface (Jupiter) groups its tools into sections, and you can search for any tool by pressing the / key. These are the everyday tasks and where to find them:

TaskToolPractical note
Add a domain or subdomainDomainsKeep each domain’s directory outside public_html so every site stays separate
DNS recordsZone EditorOnly takes effect if the domain uses the hosting’s name servers
EmailEmail Accounts and filtersCheck SPF and DKIM in the Email Deliverability tool
FilesFile Manager and FTP AccountsUse SFTP instead of unencrypted FTP
DatabasesMySQL Databases, PostgreSQL Databases and phpMyAdminOne user per application, with rights on its own database only
CertificatesSSL/TLS StatusAutoSSL issues and renews a certificate for every domain pointing to the server
Scheduled tasksCron JobsSend the job’s output to a file or silence it, or you’ll get an email on every run
PHP versionSelect PHP VersionVersion, extensions and values such as memory_limit in one place
ResourcesResource UsageThe first page to open when the site slows down

02CloudLinux limits: how to read Resource Usage

CloudLinux puts every account inside an that caps what it can use of the server’s resources. An account that hits its limit gets slowed down or has new requests refused, while the other accounts stay healthy. Six limits matter to you:

LimitWhat it measuresWhat happens when you hit it
SPEED (CPU)A share of one core: 100% means a full coreThe account is slowed down, with no error message
PMEM (memory)Physical memory of all the account’s processesPHP processes are stopped and a 503 or 500 error appears
EPConcurrent dynamic requestsA 508 error for new requests
NPROCAll processes: PHP, cron jobs and SSHA 508 or 500 error, and cron jobs fail
IODisk read and write throughputHeavy operations such as backups and unpacking slow down
IOPSDisk operations per secondSlowness with many small files

The (EP) limit is the most misunderstood. It isn’t the number of visitors; it’s the number of requests your account is handling at the same moment. A simple law governs it: concurrency equals request rate multiplied by request duration. A site receiving 5 dynamic requests a second, each taking 400 ms, keeps two processes busy on average. If the database slows down and each request now takes 4 seconds, the same traffic needs 20 processes, and the 508 error appears. So EP faults are usually a symptom of slow requests, not of too many visitors.

Customers seen from behind queuing at the counter of a busy bakery in the morning, a baker’s hands passing bread.
As in a bakery queue, when each order takes longer the same number of customers crowds the shop, and that is what slow requests do to the EP limit.

Here’s how to read the Resource Usage page: at the top, a notice if your account hit any limit in the last 24 hours; below it, a chart for each resource with the limit drawn as a horizontal line; then a table with the number of times each limit was hit (faults). Pick the period when the error appeared, find the limit whose faults rose in those same minutes, then match it against the access log (Raw Access) to see which pages or which addresses were requesting at that moment.

03Illevante’s cPanel plans in numbers

These are the three plans’ resources as Illevante publishes them; the CPU and memory figures correspond to the CPU and memory limits on the Resource Usage page:

ResourcecPanel StartcPanel PowercPanel Infinity
CPU1 core2 cores4 cores
Memory (DDR5 ECC)1 GB2 GB3 GB
NVMe storage20 GB30 GB40 GB
Inodes250,000375,000600,000
Domains5UnlimitedUnlimited
Mailbox size2 GBUnlimitedUnlimited
Backup retention15 days30 days45 days
Estimated monthly visitsAbout 35,000About 75,000About 150,000

All three plans include LiteSpeed with LSCache, CloudLinux, Imunify360, JetBackup, Redis, PHP 5.6 to 8.5, MariaDB and PostgreSQL with unlimited databases, SSH and SFTP, Git, cron jobs, Node.js and Python, and AutoSSL certificates. The visit counts are estimates: what really sets your plan’s capacity is how long each request takes and how much is served from the cache.

The number that surprises site owners most is : every file, directory and email message uses one. A single node_modules directory can hold tens of thousands of files, a mailbox that hasn’t been emptied in years can too, and the cache files of a badly configured plugin can fill whatever is left. Watch the count in the statistics on the panel’s home page.

A wooden library card catalogue with dozens of small drawers, one pulled open and packed with index cards.
Every file, directory and email message takes one inode, like a card in this catalogue, and the allowed number can run out before the space does.

04Softaculous, PHP and backups

installs more than 280 applications, including WordPress, Joomla and PrestaShop, and creates the database and its user itself. Turn on automatic updates with a backup before each update; that covers the most common ways things break. We cover tuning WordPress for performance in a separate article on this blog.

In Select PHP Version you pick the account’s PHP version, enable the extensions your application needs such as intl, imagick and redis, and set values such as memory_limit and upload_max_filesize. Remember that memory_limit is a limit per process, while PMEM is a limit for the whole account: three processes allowed 512 MB each exceed the memory of a 1 GB plan.

JetBackup takes a daily automatic backup stored on separate servers, from which you can restore the whole account, the files, a specific database, the email, or a single file. Retention depends on the plan, so if you need a longer history, such as a monthly copy kept for a year, download a full backup every month and store it somewhere else.

A hand plugging a small external hard drive into a laptop on an office desk, the screen out of focus.
A full monthly backup that you download and keep away from the server gives you a longer history than your plan retains.

05The terminal and uapi

The plans let you log in over SSH, or from the Terminal tool inside cPanel. That’s where uapi, cPanel’s programming interface on the command line, becomes the fastest route for repetitive tasks. It runs with your account’s permissions and returns results as YAML or JSON:

uapi commands for quotas, domains, databases and certificates
# Quotas and usage: disk and inodesuapi Quota get_quota_info# Domains attached to the accountuapi DomainInfo list_domains# Existing MySQL databasesuapi Mysql list_databases# A new database and a user with specific rights (both names start with your account name)uapi Mysql create_database name=nawras_shopuapi Mysql create_user name=nawras_app password='Replace-With-A-Long-Random-Password'uapi Mysql set_privileges_on_database user=nawras_app database=nawras_shop privileges=SELECT,INSERT,UPDATE,DELETE,CREATE,ALTER,INDEX# Installed certificates as readable JSONuapi --output=jsonpretty SSL list_certs

can be added from the Cron Jobs screen or with the crontab command. Here’s an example for a Laravel app’s scheduler every minute, with output silenced so you don’t get an email on every run; those emails use up inodes too:

Adding a cron job for a Laravel app from the terminal
# Replace /usr/local/bin/php with the path that which php returns(crontab -l 2>/dev/null; echo "* * * * * cd $HOME/apps/tawsil && /usr/local/bin/php artisan schedule:run >/dev/null 2>&1") | crontab -# Review the current jobscrontab -l

06Common errors and what lies behind them

Most errors visitors see on shared hosting come down to a limit the account hit or a wrong setting. These are the most frequent:

Problem508 Resource Limit Is Reached at specific times
FixOpen Resource Usage for that period: if EP or NPROC faults rose, look in the access log for slow requests or a bot flooding the site. Enable caching and block the source before you upgrade the plan.
ProblemA 503 error or blank pages during a large import or export
FixThe account hit its PMEM memory limit and PHP processes were stopped. Split the job into smaller batches, run it at a quiet time, and review memory_limit.
ProblemEmail bounces with a “full” error although there’s free disk space
FixMost likely you’ve hit the inode limit or the mailbox quota. Empty Trash and Spam, and delete old cache files and forgotten backups in the account’s home directory.
ProblemAutoSSL won’t issue a certificate for a domain or subdomain
FixValidation fails if the A or AAAA record points to another server, or if a CAA record doesn’t allow the issuer. Fix the records, check their propagation with Illevante’s DNS propagation check, then run AutoSSL from SSL/TLS Status.
ProblemA 500 error after editing .htaccess
FixA syntax error in the file, or a directive the server doesn’t support. Undo the last edit, and read the reason in the Errors tool under Metrics.

07Practical recommendation

Give yourself a ten-minute weekly routine: open Resource Usage and look for faults, check the inode count, make sure the last JetBackup backup completed, and update your applications. Keep PHP on a version that still gets security support, and turn anything repetitive into a script or a cron job instead of clicks you try to remember.

And if CPU or EP faults stay high on the Infinity plan even though your requests are fast and your cache works, it’s time for resources you don’t share with anyone. A CoreVPS server with a cPanel licence gives you those resources and keeps you on the panel you already know.

Test your understanding

Three questions, one minute

⁦0 / 3⁩Set 1

  1. 01A 508 error appears for a few minutes every morning, and nobody else on the server is complaining. What’s the likeliest explanation?

  2. 02Your site gets 5 dynamic requests a second, and each request now takes 4 seconds after the database slowed down. Roughly how many concurrent processes do you need?

  3. 03Email bounces with a “full” error although the disk is only 40% used. What do you check first?

Ready to start? Power your projects today

Choose the hosting, server or domain that suits your business, and our specialist team is available around the clock to make your projects a success.

A .com domain a year
$17
cPanel hosting per month
$2
CoreVPS servers per month
$3.50