508 Resource Limit Is Reached: fix it on shared hosting

On cPanel hosting, a 508 means your account ran out of processes. How to find which limit you hit, and the fixes: caching, blocking bots and taming WordPress cron.

· 4 min read · By the Spot Downtime team

The HTTP standard defines 508 Loop Detected for an obscure WebDAV case. But if you're seeing a 508, you're almost certainly on shared hosting, looking at a page that says “Resource Limit Is Reached”. Hosts running cPanel with CloudLinux use 508 to say your account used up its share of the server.

What limit you hit

CloudLinux puts each hosting account in a box (an “LVE”) with limits on CPU, memory and, most often, entry processes: how many PHP requests can run at the same time. When all of them are busy, the next visitor gets a 508 instead of waiting.

In cPanel, open Resource Usage. It shows which limit was hit and when. That tells you whether it's a traffic spike, a slow page, or something running in the background.

Common causes

Slow pages hold processes longer

If each request takes 4 seconds instead of 0.4, you need ten times as many processes for the same traffic. A slow database query or a call to an external API that hangs fills the limit with very little traffic.

Bots

Crawlers, scrapers and login brute-force attempts on wp-login.php and xmlrpc.php can use every process. Check the access log for a few IPs or user agents with thousands of requests.

WordPress background work

wp-cron.php runs on page views by default, and heavy plugins (backups, security scans, broken-link checkers) run inside those requests. The admin's admin-ajax.php heartbeat can add a steady stream of requests too.

How to fix it

  • Add page caching so most visitors get a static copy and never start a PHP process.
  • Block abusive bots at a CDN or firewall, and protect wp-login.php.
  • Run WordPress cron from a real cron job: set DISABLE_WP_CRON to true and call wp-cron.php every 5 or 15 minutes.
  • Find slow plugins with a profiler like Query Monitor, and remove what you don't need.
  • Upgrade the plan if it's genuine traffic. Hitting the limit because the site is popular is a good problem.

It usually happens at peak times

508s appear when traffic is highest, which is exactly when an outage costs the most, and they're gone by the time you check. An uptime monitor checking every minute records each 508 with its time, so you can line it up with cPanel's usage graph.

If your cron job runs through the web server, consider moving it to the command line and watching it with a heartbeat monitor instead.

Cron expression explainerCheck that a schedule like */15 * * * * runs when you think it does before you set it up.

Keep reading