Ahosting Logo

Web Hosting

How to Monitor Your Hosting Resources

Shared hosting plans limit more than disk space, and the limit people actually hit is not the one they watch. Disk fills slowly and visibly. The processing limits are invisible until the site becomes slow at exactly the times it matters, and nothing in the interface obviously announces it.

The four numbers that matter

In cPanel's sidebar, or under the resource usage screen, you will find these.

Disk usage. Files, databases and email together. The one everybody checks.

Bandwidth. Data transferred this billing period. Includes email and FTP, not just the website.

Entry processes. How many PHP requests are executing simultaneously. This is usually what actually limits a busy site.

CPU and memory. How much processing your account is using against its allowance.

The last two are the ones worth understanding, because hitting them produces symptoms that do not look like a resource problem at all.

The two kinds of limit fail in opposite waysDisk and bandwidthCPU, memory, processesFillsgraduallyin burstsError when hitclear and specifica slow site, or an intermittent 503Visibleon the usage screen, in advanceonly in the moment, or in the logResponseclean up or upgradefind the cause before upgradingA resource limit and a broken application look identical from outside. The usage graph is what tells them apart.

Disk: what actually fills it

Four things account for nearly all of it, and only one is genuine growth.

Backup plugins writing into the account and never cleaning up. On a WordPress site this can be tens of gigabytes nobody knew existed.

Log files growing without limit.

Email accumulated over years, particularly one mailbox left unlimited.

Media uploaded at original camera resolution.

Use cPanel's disk usage view to see the breakdown by directory rather than guessing. Clearing old backups is a permanent fix; buying more disk for an account filling with orphaned archives just schedules the same conversation.

When disk runs out, everything breaks at once

This is worth recognising because the symptoms look unrelated.

A full account cannot write. So incoming email is rejected, uploads fail, database writes are refused, sessions break and forms stop working: all at the same moment, and none of it mentions disk.

Several unconnected faults reported together is very often just a full account. Check the quota before investigating anything else.

Entry processes: the limit that actually binds

An entry process is one PHP request currently executing. Shared plans allow a small number simultaneously.

Requests beyond that queue rather than failing. The visitor waits, then the page loads. That is why the symptom is a site that hangs and then works, instead of one that errors.

The tell is timing: fast at night, slow in the afternoon. A code problem is slow consistently. A queue is slow when there is traffic.

Caching is the fix, and it is dramatic here. Every page served from cache is a request that never occupies a process at all, optimizing WordPress performance explains enabling server-level caching, which is the single largest improvement available on a shared plan.

What consumes CPU unnecessarily

Three things account for most avoidable usage.

Uncached pages. Every visit rebuilding the page from scratch.

Expensive plugins. One plugin running a database query on every page load costs more than thirty that do nothing on the front end.

Bot traffic. Crawlers and scanners consume real processing. Automated login attempts against a login page each start PHP.

That last one is worth checking in the access log if usage seems disproportionate to your actual visitors. Viewing website statistics walks through reading it.

Set the warning to reach you

cPanel emails quota warnings to the contact address on the account. If that is a mailbox on this account, the account filling up stops the warning from arriving, at the exact moment you need it.

Point it at an external address. It takes thirty seconds and it is the difference between fixing a problem early and hearing about it from a visitor.

When the plan is genuinely the limit

If caching is working, plugins are lean, and you are still at the ceiling during normal traffic, the site has outgrown shared hosting. That is a real outcome and not a failure.

At that point VPS hosting gives dedicated CPU and memory that nobody else is drawing on. Budget for the administration that comes with it. There is more on that trade honestly in comparing the tiers.

What is not a reason to move: a slow site with no caching, or one expensive plugin. A bigger server makes those cheaper to ignore rather than fixed.

On a dedicated server the network figures are quoted differently and mean different things. For reading them, see Understanding Bandwidth, Port Speed and Network Limits.

The warning that would have told you all this in advance only works if it can reach you. There is more on why the contact address must not be on this account in cPanel Contact Information and Notifications.

Most monitoring watches space and would not warn you about the other limit an account can reach. For adding it, see Understanding Inodes and Running Out of Them.

Transfer is a limit too, and it is spent by things you did not send

Bandwidth is the figure people notice only in the month they exceed it, and most of what consumes it is not visitors reading pages.

awk '{s+=$10} END {printf "%.2f GB\n", s/1073741824}' ~/logs/example.com
awk '{print $1}' ~/logs/example.com | sort | uniq -c | sort -rn | head -10
awk '{s[$7]+=$10} END {for (f in s) printf "%.1f MB %s\n", s[f]/1048576, f}' ~/logs/example.com | sort -rn | head -10

The three commands give the month's total, the addresses consuming most of it, and the individual files responsible.

What usually appears is not what people expect. A single crawler taking a large share, one uncompressed video or archive downloaded repeatedly, or images being served to another site. Any of those is fixed in minutes once you can see it, and none is fixed by buying a larger plan.

Read the direction, not the reading

A number today tells you whether you are fine today. The useful question is when you will not be.

du -sh ~/public_html ~/mail 2>/dev/null
date +%F; df -h ~ | tail -1

Record those once a month in a plain file. Three readings give a slope, and a slope gives a date.

Growth in hosting is rarely steady, which is why this matters. A mail directory or a log directory grows slowly for a year and then quickly, and the difference between noticing in advance and noticing at the ceiling is whether the fix happens calmly or during an outage. Storage filling is the one failure that stops everything at once, so it is the one worth predicting.

Mail has its own ceilings

Accounts frequently hit a mail limit long before disk or processor, and the symptom is reported as a website problem.

exim -bpc 2>/dev/null
ls ~/mail/*/*/cur 2>/dev/null | wc -l
du -sh ~/mail 2>/dev/null

Two separate limits apply. Hourly sending is capped, so a contact form, an order confirmation run or a newsletter can exhaust the allowance and then silently fail for the rest of the hour. And mailbox storage counts against the same disk quota as the site.

The queue length is the number to watch. A queue that is not draining means messages are being accepted and not delivered, which looks like nothing at all from the visitor's side until somebody asks why they never received a receipt. Managing mailbox quotas goes into the storage half.