The signs you have outgrown shared hosting
Shared hosting slowness is usually caused by unoptimised code, plugins or database queries, not plan limits. This guide shows you how to check actual account resource usage, spot genuine errors, and try performance fixes before upgrading to a VPS.
You need to move off shared hosting when you have sustained account limits being hit, or repeated 508 or database connection errors, even after you optimise code, images and the database. A slow site on its own is not a signal. Most slowdowns are front‑end bloat, unoptimised queries or PHP version choices, not a plan limit.
This picks up from a cPanel account you can already log in to, and a WordPress admin you can reach. It stands alone if you landed here from search.
Before you start
- Have cPanel login details for your current hosting, and wp‑admin access if you run WordPress.
- Back up your site and database. Do this before changing PHP versions, altering cron, or running any database optimisation. If you need a hand or want us to confirm you have a current backup in place, please open a support ticket.
- Changing PHP can break themes or plugins that are not compatible. Plan time to switch back if needed.
- Replacing WP‑Cron with a real cron improves reliability, but disabling WP‑Cron without adding a working cron job will stop scheduled tasks such as emails and order processing.
- Running database optimise or repair can lock tables during the operation. Take a backup first and run it in a quiet period.
- cPanel’s interface changes over time. Button names and layout move. Follow the outcome described here rather than hunting for a screenshot that may be out of date.
Step 1: Check cPanel Resource Usage for real limits
The goal is to see if you are actually hitting account limits over time. CloudLinux puts limits around each shared account. cPanel exposes these under Resource Usage and will show “Faults” when you hit a cap.
- Log in to cPanel for your hosting account.
- Open Metrics then CPU and Concurrent Connection Usage. If you do not see that exact label, look for Resource Usage under Metrics.
- Select a representative date range that includes your busy times, not only quiet mornings. Look at:
- CPU
- Physical memory (PMEM)
- I/O and IOPS
- Entry processes (EP) which are concurrent web requests
- Number of processes (NPROC)
- Faults
- Note any repeated faults and which resource is capped. Occasional short spikes are normal. Sustained faults, or frequent spikes during normal traffic, indicate you are being throttled.
To undo: there is nothing to undo here. You are reviewing graphs. If you picked a narrow date range by mistake, widen it and re‑check.
Step 2: Confirm real error symptoms, not feelings
The goal is to separate genuine capacity errors from front‑end slowness. CloudLinux will throw HTTP 508 “Resource Limit Reached” when your account is throttled. MySQL can throw “Too many connections” when connection limits are hit.
- Browse your site during known peak times. Watch for HTTP 508 errors. These are a strong signal your account is capped at EP or another LVE limit.
- Watch for database errors such as “Too many connections”. That indicates your application is opening more database connections than allowed for your user, or a long‑running query is tying them up.
- Check cPanel’s Errors section for recent entries if you are unsure where to look.
To undo: again, you are observing. Keep a short log of times and pages where you saw errors. You will re‑test later.
Step 3: Check inode usage and storage quotas
Inode exhaustion blocks new file writes and can break updates. On many CloudLinux shared plans you will see inode usage in cPanel’s statistics panel or Resource Usage area.
- Log in to cPanel. Look for a Files used or Inodes figure in the sidebar statistics or Resource Usage. If you do not see it, try Disk Usage for a sense of overall space and file counts.
- If you are near or at the inode limit, clear caches and old backups stored under your account, then try your operation again.
To undo: if you deleted content and need it back, restore it from the backup you took before starting. If you did not take one, stop and take a full backup now before deleting more.
Step 4: Use WordPress Site Health to find quick wins
The goal is to address obvious configuration problems before changing plans. WordPress has a built‑in Site Health checker.
- In wp‑admin, go to Tools then Site Health.
- Work through the Recommendations and the Status tabs. Look for:
- Outdated or unsupported PHP versions
- Modules or extensions missing
- Persistent object cache suggestions
- Scheduled events overdue, which indicates WP‑Cron issues
- Fix the highest impact items first and re‑test.
To undo: Site Health does not make changes by itself. If a change you made causes issues, revert that single change. Keep a short change log as you go.
Step 5: Pinpoint slow code with Query Monitor
The goal is to identify heavy plugins, themes, or queries before you spend on a VPS. Query Monitor shows slow database queries, duplicate queries, hooks and HTTP calls.
- Back up your site.
- Install and activate the Query Monitor plugin from the WordPress plugin directory.
- Load your slow pages while logged in as an administrator. Open the Query Monitor panel to see:
- The slowest queries and which component made them
- External HTTP requests to third‑party services
- Hooks taking the longest time
- Disable, replace or configure the worst offenders. Start with features you do not need. Keep one change at a time so you can assess impact.
To undo: deactivate or remove Query Monitor once you finish profiling. If disabling a plugin caused a problem, re‑enable it, then look for a lighter replacement later.
Step 6: Upgrade PHP in cPanel MultiPHP Manager
The goal is to gain performance from a supported PHP version. Newer PHP is usually faster and more memory efficient.
- Confirm your themes and plugins support the target PHP version. Check the developers’ notes. Take a full backup.
- In cPanel, open MultiPHP Manager under Software.
- Select the domain and choose a supported PHP version. Apply the change.
- Test your site thoroughly: homepage, checkout, forms and admin screens.
To undo: go back to MultiPHP Manager and switch to your previous PHP version. Clear any caches and re‑test. If the site remains broken, restore from your backup.
Step 7: Enable HTTP compression in cPanel
The goal is to reduce transfer size of HTML, CSS and JavaScript so pages load faster without changing plans.
- In cPanel, open Optimize Website under Software.
- Select the option to compress content. Many sites choose to Compress all content. Apply the change.
- Test your site and confirm response headers now include gzip or deflate, and page size reduced.
To undo: return to Optimize Website and turn compression off. Avoid enabling conflicting compression rules in multiple places at once.
Step 8: Replace WP‑Cron with a real cron job
The goal is to run scheduled tasks reliably, which removes slow page loads caused by long jobs trying to run during a visitor’s request.
- Back up your site.
- Edit wp‑config.php and add this line above the line that says “That’s all, stop editing”:
define('DISABLE_WP_CRON', true); - In cPanel, open Cron Jobs.
- Add a cron job to run every 5 minutes. You can use one of these approaches:
- Call the URL:
Replace yourdomain.tld with your real domain.wget -q -O - https://yourdomain.tld/wp-cron.php?doing_wp_cron=1 >/dev/null 2>&1 - Call the file via PHP if you know the path:
Replace USERNAME and the path to match what you see in cPanel’s File Manager. The PHP binary path can vary. If unsure, use the URL method above.php -q /home/USERNAME/public_html/wp-cron.php >/dev/null 2>&1
- Call the URL:
- Check Tools then Site Health again to confirm scheduled events are running on time.
To undo: remove the cron job in cPanel and delete the DISABLE_WP_CRON line from wp‑config.php. Confirm scheduled tasks run again on page loads.
Step 9: Use a persistent object cache if your plan offers it
The goal is to cut database load by caching objects between requests. Without a persistent cache, WordPress stores transients and object cache in the database which adds overhead.
- Check Site Health. If it recommends a persistent object cache and your plan supports Redis or Memcached, follow your cache provider’s instructions to enable it. This usually means enabling a module in your hosting panel and adding a plugin to connect WordPress to that service.
- Test logged‑in and logged‑out pages. Confirm admin screens still work as expected.
To undo: disable the cache plugin and remove any object‑cache.php drop‑in from wp‑content if instructed by the plugin. Clear caches and re‑test.
Step 10: Optimise the database safely
The goal is to remove overhead from fragmented tables. This can make queries faster without a plan change.
- Back up the database. Verify you can restore it.
- Run the optimisation during a quiet period. If you use WP‑CLI, the command wraps mysqlcheck:
If you do not have WP‑CLI, you can use phpMyAdmin to run OPTIMIZE TABLE on selected tables, but take extra care to avoid long locks during peak times.# Explain: this scans and optimises each database table for the current site wp db optimize - Re‑test your site and admin areas.
To undo: there is no direct undo for table optimisation. Restore the database backup if you encounter issues.
Step 11: Right‑size and optimise images
The goal is to remove the largest front‑end waste. Oversized images are a common cause of slow pages that is not related to hosting limits.
- Audit your homepage and top landing pages. Note any images larger than they render on screen.
- Replace images with versions that match display size and use modern formats where appropriate. Ensure WordPress is outputting responsive image attributes so the browser picks the right size.
- Retest page speed. This is often the single biggest visible win.
To undo: keep your original images in a safe folder so you can swap back if quality is not acceptable.
Step 12: Re‑check Resource Usage and decide
The goal is to confirm whether you are still hitting account limits after optimising code and configuration. This is your decision point.
- Return to cPanel’s CPU and Concurrent Connection Usage. Use a similar period to your first check. Compare:
- Are Faults still frequent during normal traffic
- Do CPU, PMEM, IO or EP cap out under routine load
- Are you still seeing HTTP 508 errors or “Too many connections” database errors
- If your site now runs within limits and errors have stopped, you do not need to upgrade plans today. Keep your notes and review again after your next marketing push or seasonal peak.
- If you still see sustained faults or recurrent 508 or database connection errors during normal traffic, you have outgrown shared hosting. It is time to move to dedicated resources such as a VPS so your site is not throttled by neighbour activity.
At Hostworld you manage a VPS through Virtualizor from our client area. You control start, stop, reboot, rebuild, VNC console and ISO mounting there. If you are ready to size a VPS, see our Linux VPS page or read through our VPS guides for planning, migration and management. If you want help interpreting your cPanel Resource Usage graphs before you decide, please open a support ticket so we can review your Hostworld account’s data with you.
Real signals versus false signals
Real signals you have outgrown shared hosting
- Sustained LVE limit hits in cPanel’s Resource Usage, shown as recurring Faults for CPU, PMEM, IO, IOPS, EP or NPROC.
- Regular HTTP 508 “Resource Limit Reached” during busy times.
- Frequent “Too many connections” errors from MySQL for your user.
- Hitting inode limits that block writes and updates, once you have already pruned unnecessary files.
False signals that do not mean you need a VPS
- “My site feels slow.” Most of the time this is front‑end weight, long tasks in JavaScript, or unoptimised images. Fix those first.
- “I have too many plugins.” Count does not predict performance. Quality, workload and what the plugins do matters. One heavy plugin can be worse than ten light ones.
- Occasional spikes in Resource Usage with no user impact. Short peaks happen. Look at a representative period.
A practical rule of thumb
If, after upgrading PHP, fixing front‑end and image issues, applying a persistent object cache where available, and optimising the database, your cPanel Resource Usage still shows sustained faults during normal traffic, or you continue to see 508 or database connection errors, you have outgrown shared hosting. Move to dedicated resources so your traffic is not throttled.
What next
- If you are moving to a VPS, choose location and size, then plan your migration. Start with our Linux VPS plans and read our VPS guides to understand the steps.
- If you want us to check your graphs and error logs before you commit to a move, please open a support ticket. We can look at your Hostworld account and advise on optimisation versus upgrade.
Common questions
How long should I monitor Resource Usage before deciding
Give it at least a few days that include your known busy periods. If you run campaigns, measure during one. Look for patterns of recurring faults rather than a single spike.
Will a VPS automatically make my site fast
No. If your slowness is due to heavy JavaScript, oversized images or inefficient queries, those will still be slow on a VPS. The VPS gives you dedicated resources and control. You still need to optimise your application.
Do I need a VPS for WooCommerce
Not by default. Many small shops run well on shared hosting after optimisation. If you have high checkout concurrency, heavy imports, or frequent background jobs, you may need dedicated resources. Check Resource Usage and errors first.
What if changing PHP breaks my site
Switch back in cPanel’s MultiPHP Manager. Clear caches and test again. If you cannot restore normal operation quickly, restore from your backup. Then plan an update path for the incompatible plugin or theme before retrying.
Is the number of plugins a reason to upgrade
No. It is the work they do. Use Query Monitor to find the real hotspots. Replace or remove the expensive ones. Upgrading plans to mask a single slow plugin is poor value.