You've Got a 508 Error and Support Says "Your CPU Usage Is High"
Your website was working a few minutes ago. Now, instead of the homepage, you see the text 508 Resource Limit Is Reached. Or maybe a 503 Service Unavailable error with the message Error 503 Resource Limit Reached has appeared in your browser. The first question that comes to mind is: "How much resources have I consumed that my website is completely down?"
The short answer: your shared hosting has a specific ceiling, and this ceiling is measured by criteria that often differ from your perception of "resources." This article is a reference for what exactly each limit counts, what error it manifests as, and where in the control panel you should check its value.
CPU Limit on Shared Hosting; A Percentage Calculated Per Second
The CPU limit on shared hosting is usually defined as a "percentage" or "CPU seconds." One full core means 100%. If your plan has 50% CPU, it means you can use half a core at any given moment. But the point most users don't know is this: this percentage is averaged over short time intervals (e.g., 60 to 300 seconds), not measured in real-time.
That means if your website consumes 100% for 10 seconds and then is almost idle for 50 seconds, your 60-second average would be around 16%, and it won't cause a problem. But if a broken script, such as an infinite loop in WordPress, keeps CPU usage high for 5 consecutive minutes, the limit will be triggered.
The error you see: 508 Resource Limit Is Reached in the browser, or in the hosting's error_log file, a message similar to CPU seconds limit exceeded. In cPanel, the Metrics → CPU and Concurrent Connections section shows the real-time usage graph. In DirectAdmin, the System Information → Resource Usage section does the same.
Here's where people go wrong: the user sees that "only one visitor" was online, so why is CPU usage high? The problem isn't the number of visits. The problem is a broken cron job that runs a heavy script every 5 minutes, or a WordPress plugin that constantly sends HTTP requests to its own server in the background. The real visitor is just one person; the real consumer is an automated process that you created and forgot about.
What's the Difference Between the RAM Limit and "Virtual Memory"?
The RAM limit on shared hosting usually consists of two numbers: Physical Memory and Virtual Memory. Virtual memory includes program code, shared libraries, and shared memory. A PHP process that consumes 256 MB of physical memory might have 512 MB of virtual memory.
The common error for this limit in WordPress is the white screen of death. In the error_log file, you'll see the message Allowed memory size of 268435456 bytes exhausted. This means the PHP script has exceeded the memory_limit ceiling set in the control panel. Note: you can change this value in the php.ini file or .htaccess, but if actual usage exceeds the account's ceiling (e.g., 1 GB RAM), you'll get a 508 error, and changing memory_limit won't help anymore.
The inode Limit; The Silent and Dangerous Filling of Disk Space
An inode is a structure in the filesystem that stores the metadata of each file or folder. Every file, every email, every cache, every session consumes one inode. The inode limit means "the number of files you can have," not the volume they occupy.
A real example: a WordPress site with 50,000 cache files and 20,000 old emails in the mailbox might only occupy 2 GB of space, but it has consumed 70,000 inodes. If your ceiling is 100,000, you're close to being full. When inodes run out, something strange happens: you still have space, but you can't create any new files. No new cache, no uploads, not even new session files for user logins.
The error for this limit is usually seen in the control panel: Disk quota exceeded while your disk usage is at 40%. In cPanel, open Files → File Manager, and at the top of the page, you'll see the space and inode usage bar. In DirectAdmin, File Manager → Quota has the same information.
Here's where people go wrong: instead of deleting extra files, the user opens a support ticket and says, "My space isn't full, why can't I upload?" The answer is that the problem is the number of files, not the volume. The main culprits are usually: the tmp folder full of temporary files, an email inbox that hasn't been cleaned for years, and old plugin caches.
The Concurrent PHP Execution Limit; A Victim of Neighbor Traffic
This limit is the number of PHP processes that your account can run simultaneously. The typical number is between 10 and 50. Every HTTP request that reaches a PHP script consumes one process. If your website fetches data from an external API and that API is slow, each user request holds a process in a waiting state for several seconds.
The error for this limit appears in the user's browser as 503 Service Unavailable. In the hosting logs, you'll see the message Resource limit reached: too many PHP processes. The important point: this error doesn't necessarily mean your website is busy. A simple HTTP Flood attack with 20 concurrent requests can fill all your PHP slots, even if your website truly gets 5 visits per minute.
How to diagnose: in cPanel, open the Metrics → Errors section and look for messages containing max_children or server reached max_children. This message comes from PHP-FPM and means all allowed processes are busy.
The IO Limit and Disk Input/Output; Slowness That Looks Like a Network Problem
IOPS (Input/Output Operations Per Second) and disk read/write speed are limits that are less discussed but manifest themselves more than anything else. When your hosting is on a shared NVMe disk with 50 other websites, your share of disk IO is limited.
The symptom of this limit: your website is "slow," not "down." TTFB (Time To First Byte) increases, but once the page finally loads, everything is fast. Your WordPress takes 8 seconds to load, but speed testing tools say the page size is small and the problem isn't the network. The problem is that every database query must be read from the disk, and the disk is busy.
This limit usually doesn't have a specific error. Instead, in the CPU and Concurrent Connections graph, you'll see that CPU usage is low (e.g., 15%) but response time is high. In this case, optimizing database queries and enabling appropriate caches (such as Redis or Memcached) is the most effective approach. The comprehensive guide on optimizing WordPress on shared hosting was written precisely for this scenario.
Where in the Control Panel Should We Check Each Limit?
| Limit | cPanel | DirectAdmin | Common Error |
|---|---|---|---|
| CPU | Metrics → CPU and Concurrent Connections | System Information → Resource Usage | 508 Resource Limit Is Reached |
| RAM | Metrics → CPU and Concurrent Connections | System Information → Resource Usage | White screen + memory exhausted |
| inode | File Manager → Top bar | File Manager → Quota | Disk quota exceeded despite available space |
| PHP Processes | Metrics → Errors | Logs → Error Log | 503 + max_children |
| IO | No direct graph; diagnose from slowness | No direct graph | High TTFB without a specific error |
If after checking these sections you realize that shared hosting limits aren't sufficient for your needs, you have two paths: upgrading to a plan with higher resources on ServerNet Linux hosting, or migrating to a dedicated server where you have no software limits from our side, and only the hardware is your ceiling. The second option makes sense when your usage is consistently above 80% of your current ceiling, not just hitting the limit once a month due to a short traffic spike.
Limits You Can't See in the Control Panel but Exist
Some limits aren't shown in any graph. The number of concurrent MySQL connections, the outbound email rate limit (usually 500 emails per hour for shared accounts), and the maximum size of each uploaded file (usually 256 MB in PHP) fall into this category. These limits are documented by each provider, but there's no place in the control panel to see their real-time usage.
Here's where people go wrong: a user writes a news aggregator script that sends requests to 50 news websites every 10 minutes. After an hour, the website's emails stop being sent. The problem is the email limit, not the script. Services like Mailgun or SendGrid are designed for sending bulk transactional emails; shared hosting wasn't built for sending newsletters to 10,000 members.
Frequently Asked Questions
What does the 508 Resource Limit Is Reached error mean?
It means your account has exceeded the ceiling of one of the designated resources. This resource can be CPU, RAM, or the number of concurrent processes. A 508 error is usually temporary, and after 60 to 300 seconds when the average usage drops, the website becomes available again. If it keeps recurring, you need to find the resource consumer, not just wait.
What is the inode limit on hosting, and how do I clean it up?
The inode ceiling depends on the hosting plan and is usually between 50,000 and 500,000. To see the current count, go to File Manager in cPanel and check the bar at the top of the page. To clean up, first empty the tmp folder, then delete old emails, and finally clear WordPress plugin caches. Plugins like WP Rocket have an automatic cache clearing option.
What is the PHP memory limit, and how do I increase it?
The default memory_limit value on shared hosting is usually 256 MB. To change it, in cPanel open the Select PHP Version → Switch to PHP Options section and change the memory_limit value. If you increase it to 512 MB but still get the memory exhausted error, the problem is the account's RAM ceiling, and you need to upgrade your plan.
Why does my website get a 503 error without an increase in traffic?
The most likely reason is a broken cron job or a plugin that sends heavy requests in the background. In cPanel, open the Cron Jobs section and temporarily disable all scheduled tasks. If the error is resolved, enable them one by one to find the culprit. See the complete guide on setting up cron jobs in the control panel.